2011-11-07 22 views
7

Jestem w fazie uczenia się OOP w PHP i chcę wiedzieć jak wywołać zmienną z innej klasy PHP.Wywołanie zmiennej z innej klasy PHP

np.

class first { 
    public $var1 = 1; 
} 

myślę, że to w ten sposób, ale nie wiem jak dalej:

$ pierwszy = new $ pierwszy();

Odpowiedz

14

Trzeba zrobić coś takiego:

$first = new first(); 
echo $first->var1; 
+0

@xdazz dzięki! <3 – FBwall

2

Trzeba nazwać tak:

$first = new first(); 
$first->var1; 
0

Trzeba będzie utworzyć instancję klasy:

$instance=new first(); 

, a następnie można uzyskać dostęp do zmiennej z tej instancji:

$var=$instance->var1; 

Uwaga - przed nazwą klasy nie ma wartości $ przed nazwą klasy.

1

uzyskać lepszy sposób zrobić tak:

class first { 
    private $var1 = 1; 
    function getVar(){ 
     return $this->var1; 
    } 

    function setVar($value){ 
     $this->var1 = $value; 
    } 
} 

Albo tak:

class first { 
    private $var1 = 1; 
    function __get(){ 
     return $this->var1; 
    } 

    function __set($key,$value){ 
     $this->$key = $value; 
    } 
} 

W tym przypadku można spróbować obsługi pewne wyjątki.

Manual: http://www.php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.members

+0

Używanie funkcji gettera i ustawiającego jest lepszym rozwiązaniem w stylu OOP, ponieważ eliminuje wewnętrzną reprezentację z zewnętrznego dostępu. Na przykład, jeśli napisałeś dużo kodu zależnego od wersji 1, ale później zdecydowałeś się zmienić nazwę zmiennej na coś innego, wtedy cały zewnętrzny kod zostałby złamany. –

+0

To jest pytanie, w jaki sposób chcesz udostępnić wartość (np. Odczyt/zapis) i jeśli chcesz zezwolić na zmianę wartości bez zauważenia przez klasę. Nie jest lepiej per se, zobacz także http://www.javaworld.com/javaworld/jw-09-2003/jw-0905-toolbox.html, który ma prowokacyjny tytuł, ale jest o wielu decyzjach, które grają rola. – hakre

0
<?php 

class Myname 
{ 
    public static $name='Your First Name'; 
} 
class Mylast 
{ 
    public static $last='Your Last Name'; 
} 
class Fullname 
{ 

    public static function staticValue() { 
     return Myname::$name."--".Mylast::$last; 
    } 
} 

print Fullname::staticValue() . "\n"; 
?>