Как я могу ссылаться на свойство класса, зная только строку? class Foo { public $bar; public function TestFoobar() { $this->foobar('bar'); } public function foobar($string) { echo $this->$$string; //doesn't work } } Каков правильный способ оценки строки?
Я знаю, что этот вопрос звучит довольно расплывчато, поэтому я сделаю это более понятным с примера: $var = 'bar'; $bar = new {$var}Class('var for __construct()'); //$bar = new barClass('var for __construct()'); Это то, что я хочу сделать. Как бы вы это сделали? Я не мог использовать eval () следующим образом: $var = 'bar'; eval('$bar = […]
В PHP есть что-то вроде следующего? $blah = 'foo1'; class foo2 extends $blah { //… } class foo1 { //… } Это дает ошибку. Я хочу динамически установить $ blah, чтобы я мог расширить любой класс, который я хочу. Изменить: причина для этого, потому что я хотел использовать функцию из другого класса в связанном классе. […]
Недавно я узнал о StackOverflow, что мы можем получить «идентификатор экземпляра» любого ресурса , например: var_dump(intval(curl_init())); // int(2) var_dump(intval(finfo_open())); // int(3) var_dump(intval(curl_init())); // int(4) var_dump(intval(finfo_open())); // int(5) var_dump(intval(curl_init())); // int(6) Мне нужно что-то подобное, но применяется к классам: class foo { public function __construct() { ob_start(); var_dump($this); // object(foo)#INSTANCE_ID (0) { } echo preg_replace('~.+#(\d+).+~s', '$1', […]
Мне нужно, чтобы конструктор класса в PHP вызывал конструктор родительского родителя (grandparent?) Без вызова родительского конструктора. // main class that everything inherits class Grandpa { public function __construct() { } } class Papa extends Grandpa { public function __construct() { // call Grandpa's constructor parent::__construct(); } } class Kiddo extends Papa { public function __construct() […]
Я пытаюсь объявить публичную статическую переменную, которая представляет собой массив массивов: class Foo{ public static $contexts = array( 'a' => array( 'aa' => something('aa'), 'bb' => something('bb'), ), 'b' => array( 'aa' => something('aa'), 'bb' => something('bb'), ), ); // methods here } function something($s){ return … } Но я получаю сообщение об ошибке: Ошибка […]
Предположим, что у нас есть класс CFoo . В следующем примере, когда вызывается CFoo::__destruct() ? function MyPHPFunc() { $foo = new CFoo(); . . . // When/where/how does $foo get destroyed/deleted? } В этом примере MyPHPFunc деструктор, когда скрипт выходит из области MyPHPFunc потому что $foo больше не будет доступен?