aleksander
4.06.2004, 17:37:50
jestem w trakcie poznawania OOP i testowo przerabiam mój proceduralny program na obiektowy. Mam taki kod, który sprawdza, czy w adresie są jakieś zmienne i odpowiednio przypisuje zmiennej $self "?" lub "&":
[php:1:84f191ffea]<?php
if (!empty($_SERVER["QUERY_STRING"]))
{
$self=$_SERVER["REQUEST_URI"]."&";
}
else
{
$self=$_SERVER["REQUEST_URI"]."?";
}
?>[/php:1:84f191ffea]
Chciałem tego ifa umieścić w konstruktorze, ale z przecież wtedy $self nie będzie widoczny w innych metodach. Jak więc "uglobalizować" tą zmienną?
rogrog
4.06.2004, 17:49:00
proponuję tak:
[php:1:3b83424f57]<?php
var $self;
class stronka {
function stronka(){
global $self;
if (!empty($_SERVER["QUERY_STRING"]))
{
$self=$_SERVER["REQUEST_URI"]."&";
}
else
{
$self=$_SERVER["REQUEST_URI"]."?";
}
}
}
?>[/php:1:3b83424f57]
albo
[php:1:3b83424f57]<?php
class stronka {
var $self;
function stronka(){
if (!empty($_SERVER["QUERY_STRING"]))
{
$this->self=$_SERVER["REQUEST_URI"]."&";
}
else
{
$this->self=$_SERVER["REQUEST_URI"]."?";
}
}
function getSelf(){
return $this->self;
}
}
$obiekt = new stronka();
// i teraz odwolujemy sie poprzez getSelf
$self = stronka->getSelf();
echo $self;
?>[/php:1:3b83424f57]
myślę że to drugie rozwiązanie jest lepsze
aleksander
4.06.2004, 19:11:12
obie odpowiedzi poprawne

, THX. oj jeszcze wiele sie musze nauczyc...