|
|
|
| Объявлен пустой класс
В него надо добавить свойства из переменной
$txt="prop1|prop2|prop3|prop4";
|
для то что-бы изменить имена свойств класса и их количество, меняется значение переменной
$txt="s1|s2|s3|s4|s5|s6";
|
Как реализовать этот механизм, что-бы было эквивалентно, например:
<?php
class new{
var $s1;
var $s2;
var $s3;
var $s4;
var $s5;
var $s6;
}
?>
|
| |
|
|
|
|
|
|
|
для: roma67
(12.05.2012 в 13:54)
| | <?php
$class = new class();
$list = explode('|',$txt);
foreach ($list as $item){
$class->$item = '';
}
?>
PHP не притязателен к тому, что свойство создается на лету, хотя часто это и не очень хорошо, но бывает нужно | |
|
|
|
|
|
|
|
для: speedsoft
(12.05.2012 в 14:14)
| | Спасибо. И правда.
А это документированный способ или предусмотрен иной? | |
|
|
|
|
|
|
|
для: roma67
(12.05.2012 в 14:24)
| | Если честно, я не знаю это так специально сделали или наоборот недосмотрели, но вот так оно сделано. При присвоении значения не существующему свойству объекта, это свойство создается. Проблема заключается в том, что PHP создает их и даже не заикается. И написав
<?php
class myClass(){
public $auto='';
}
$my = new myClass();
$my->avto='audi';
echo $my->auto;
|
мы не получим ни желаемого результата, ни ошибки. А когда код огромный, найти такую мелочь очень сложно.
поэтому как минимум, было бы замечательно класс расширить методами для получения свойства и создания нового
<?php
class myClass(){
public $auto='';
public function createProperty($prop,$value){
$this->$prop=$value;
}
public function getProp($prop){
return (isset($this->$prop))? $this->$prop : null;
}
}
|
и создавать уже свойства через метод createProperty. | |
|
|
|
|
|
|
|
для: speedsoft
(12.05.2012 в 15:36)
| | Здорово. Вы не пропадайте,. День, два пройдет, я хотел бы с Вами пообщаться.
Могу оставить реквизиты для связи. Тут я конечно инициирую потребность в общении, в деле.
Хотите вы оставьте. Я не хочу растеряться | |
|
|
|
|
|
|
|
для: roma67
(12.05.2012 в 21:12)
| | аська четыре-семь, девять-сем, ноль, четыре-четыре-восемь
но т.к. работы очень много, уделить оч. много времени не смогу ))
Да и на форуме есть люди более компетентные. Но если это не останавливает, то пожалуйста, стучите :) | |
|
|
|