PHP Sınıflar: örneğinin adıyla bir sınıf örneği yöntemini çağırın

3 Cevap php

ben bu tür bir sınıf var

Class Car {
private $color;

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

public function get_color(){
return $this->$color;
}

}

Sonra ben bunun bazı örneklerini oluşturmak:

$blue_car  = new car('blue');

$green_car = new car('green');

etc.

Şimdi ben örneğinin adına göre, sinek yöntemi get_color () aramak gerekir

$instance_name='green_car';

Bunu yapmak için herhangi bir yolu var mı?

3 Cevap

$$instance_name->get_color();
${$instance_name}->get_color();

ya da bu gibi bir şey.

Edit:

Test ...

<?php
class test_class{
    public function __construct( $value ){
        $this->value = $value;    
    }
    public function getValue(){
        return $this->value;
    } 
}

$test = new test_class( "test" );
$test2 = new test_class( "test2" );

$iname = "test";
$iname2 = "test2";

echo $$iname->getValue(), "\r\n";    \\ echos test
echo ${$iname2}->getValue(), "\r\n"; \\ echos test2

?>

Php 5.2 Hem değer

$green_car->get_color()

eşdeğer olacaktır

call_user_func(array($$instance_name, 'get_color'))

Ben neden genellikle sadece bir parametre olarak örneği geçmek veya başka bir değişkene atamak, "adıyla" örneği aramak gerek emin değilim. Varsayılan olarak, PHP5 sadece kopya değil, sınıfa başka bir başvuru yapacaktır. Ama kullanabilirsiniz = & edebilirsiniz iyi ölçmek için ve ne yaptığını çok açık olun.

$blue_car = new Car('blue');
$red_car = new Car('red');

$current_car =& $blue_car
$current_car->get_color();  // returns blue car's color

$current_car =& $red_car
$current_car->get_color();  // returns red car's color