PHP sözdizimi: Bir üye değişkeni bir sınıf inşa

3 Cevap php

Ben böyle bir üye değişkeni bir sınıf yapmaya çalışıyorum:

<?
class A{
    private $to_construct = 'B'; 
    function make_class(){
    	// code to make class goes here
    }

}

class B{
    function __construct(){
    	echo 'class constructed';
    }
}

$myA = new A();
$myA->make_class();
?>

Ben kullanarak çalıştı:

 $myClass = new $this->to_construct();

ve

$myClass = new {$this->to_construct}();

ancak ne çalıştı. Bunu yapmak zorunda sona erdi:

$constructor = $this->to_construct;
$myClass = new $constructor();

Yerel bir değişken olarak sınıf adını saklamak olmadan bunu yapmak için bir yol olması gerektiği gibi görünüyor. Ben bir şey eksik?

3 Cevap

Bunu denediniz mi?

 $myClass = new $this->to_construct;

PHP 4 veya bir şey kullanıyor musunuz? 5.2.9 $myClass = new $this->to_construct(); mükemmel çalışıyor.

Sonunda size PHP ile birlikte yaşamak zorunda buydu. PHP sözdizimi ve semantik çok tutarsız. Örneğin, bir arama sonucu bir dizi erişim syntax hatası:

function foo() {
  return array("foo","bar");
}
echo $foo()[0];

Başka bir dil o yapabilirdi ama PHP yapamam. Bazen sadece yerel değişkenlere değerlerini saklamak gerekir.

Aynı PHP eski sürümlerinde func_get_args() için de geçerlidir. Eğer bir işleve geçmek istiyorsa, önce yerel bir var bunu saklamak gerekiyordu.

Ben hatları arasında iyi okursanız böyle bir şey yapmaya çalışıyoruz. Değil mi?

class createObject{
    function __construct($class){
    	$this->$class=new $class;
    }

}

class B{
    function __construct(){
        echo 'class B constructed<br>';
    }
    function sayHi(){
        echo 'Hi I am class: '.get_class();
    }
}

class C{
    function __construct(){
        echo 'class C constructed<br>';
    }
    function sayHi(){
        echo 'Hi I am class: '.get_class();
    }
}
$wantedClass='B';
$finalObject = new createObject($wantedClass);
$finalObject->$wantedClass->sayHi();

--
Dam