В этом классе можно ли получить динамическое значение из массива? class MyClass { private $array_data; function __construct() { $this->array_data['first']['a'] = '1'; $this->array_data['second']['b'] = '2'; $this->array_data['third']['c'] = '3'; } public function getIndexValue($index){ return $this->{'array_data' . $index}; } } $MyClass = new MyClass(); // Prints NULL, but i expect '1' var_dump($MyClass->getIndexValue("['first']['a']"));
Ниже мой класс. class MaterialType { public $id; public $name; function getAllMaterialType() { $query = "SELECT * FROM material_types"; $result = mysql_query($query); $arr = array(); while ($row = mysql_fetch_array($result)) { $arr[] = new MaterialType(); $arr[]->id = $row['m_type_id']; $arr[]->name = $row['m_type_name']; } return $arr; } } Проблема в том, что когда я создаю объект в массиве, […]
Видеть: $class_members = get_class_vars(__CLASS__); foreach($class_members as $key => $value) { if (strpos($key, '_output') === 0) { // I want to eval() this $code = '$this->' . $key . ' = 0;'; } } Предположим, я хочу присвоить значение 0 всем членам класса, начинающимся с _output . Я планирую использовать eval . Хорошая или плохая идея?
Я использую CakePHP 2.4.5 и PHP 5.5 и хотел бы использовать черту. У меня есть черта в Utility / VariablesTrait.php под названием VariablesTrait . Чтобы воспользоваться преимуществами пространств имен, я дал им пространство имен App\Utility\VariablesTrait , так как Utility\VariablesTrait кажется немного слишком глобальным, и первое будет работать лучше с CakePHP 3. В моем классе, в […]
Я хочу сделать это: class MyClass { var $array1 = array(3,4); var $array2 = self::$array1; } и $ array2 не работает. У вас есть решение / трюк, чтобы свойство класса было равно другому свойству класса? Благодарю.
У меня есть суперкласс, который содержит свойства и методы их настройки class Super{ private $property; function __construct($set){ $this->property = $set; } } то у меня есть подкласс, который должен использовать это свойство class Sub extends Super{ private $sub_property function __construct(){ parent::__construct(); $this->sub_property = $this->property; } } но я продолжаю получать ошибку Notice: Undefined property: Sub::$property […]
С примером такого класса: class Test{ public function &__get($name){ print_r($name); } } Экземпляр Test отбросит результат как таковой: $myTest = new Test; $myTest->foo['bar']['hello'] = 'world'; //outputs only foo Есть ли способ получить дополнительную информацию о том, какое измерение массива будет доступно, показывая мне (из предыдущего примера), что элемент bar из foo и элемент hello bar […]
Что-то подобное существует? Я хотел бы сделать что-то подобное на PHP, но я не вижу, как это сделать из документов PHP: public class User : ValidationBase { [NotNullOrEmpty(Message = "Please enter a user name.")] public string UserName { get; set; } } Я ищу PHP-эквивалент атрибута свойства ASP.NET/C#, который в приведенном выше примере обозначается [NotNullOrEmpty(Message […]
Мне интересно, есть ли веские причины, почему это поведение возможно в текущей реализации PHP 5.4: trait T { public function test(PDO $pdo) {} } class C { use T; public function test(DOMDocument $dom) {} } Я думал, что тот факт, что класс использует черту, гарантировал, что у этого класса есть определенный интерфейс. Но здесь, если […]
Я хотел бы иметь возможность сделать следующее: $obj = new stdClass; $obj->status = "success"; $obj2 = new stdClass; $obj2->message = "OK"; Как я могу расширить $ obj так, чтобы он содержал свойства $ obj2, например: $obj->status //"success" $obj->message // "OK" Я знаю, что могу использовать массив, добавлять все свойства в массив и затем отбрасывать его […]