2013-06-13 21 views
7

Jestem bardzo nowy w klasie PHP, więc wybacz mi, jeśli odpowiedź jest naprawdę oczywista. Próbuję dowiedzieć się, jak używać zmiennej zdefiniowanej poza klasą wewnątrz klasy. Tutaj jest bardzo surowy przykładUżyj zmiennej zewnętrznej wewnątrz klasy PHP

$myVar = 'value'; 

class myClass { 
    private $class_var = $myVar; 
    //REST OF CLASS BELOW 
} 

wiem powyższe nie działa, ale w jaki sposób mogę korzystać z zewnętrznego $ MyVar wewnątrz klasy?

+0

przekazać je do konstruktora? –

+0

Czy możesz podać mi przykład? Jak już wspomniałem, jestem bardzo nowy na zajęciach, więc wciąż uczę się tajników. –

+0

przykład znajduje się poniżej, jeśli chcesz uzyskać zmienną, możesz zrobić dla niej metodę oceny –

Odpowiedz

12

Spróbuj tego:

$myVar = 'value'; 

class myClass { 
    private $class_var; 

    public function __construct($myVar) { 
    $this->class_var=$myVar; 
    } 

    //REST OF CLASS BELOW 
} 

Deklarując klasę, trzeba będzie zdać $myVar jak tak, $myClass = new myClass($myVar);.

+0

co robi to znakomicie? wtedy możesz przekazać go konstruktorowi podczas tworzenia obiektu ... przyznane ... ale to o nim nie jest? –

+2

teraz 'myClass' może normalnie używać' $ this-> class_var'? –

+0

Nie sądzę, że tego właśnie chcesz. patrz komentarz powyżej. –

-3

Każda funkcja ma swój "zakres". Możesz to zmienić, deklarując zmienną jako globalną w funkcji podobnej do tej:

$myVar = 'value'; 

class myClass { 
    public function __construct() { 
    global $myVar; 
    $this->class_var=$myVar; 
    } 
} 

to ustawi zmienną w instancji obiektu.

Jednak należy pamiętać, że można go używać bezpośrednio w funkcji bez konieczności ustawić ją jako zmienną klasy jak ten:

$myVar = 'value'; 

class myClass { 
    public function myfunction() { 
    global $myVar; 
    echo $myVar; 
    } 
} 
+2

Możesz przeczytać to: http://stackoverflow.com/questions/11923272/use-global-variables-in-a-class/11923384#11923384 – PeeHaa

+0

@PeeHaa 埽 To jest tak dokładną odpowiedź, głosowałem za tym, aby to pytanie zostało zamknięte jako duplikat tego, zamiast powtarzać dyskusję. – IMSoP

+0

@IMSoP Dziękujemy! – PeeHaa

Powiązane problemy