Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Добавление в класс свойств
 
 автор: roma67   (12.05.2012 в 13:54)   письмо автору
 
 

Объявлен пустой класс


<?php
class new{
}
?> 


В него надо добавить свойства из переменной
 $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;
}
?> 

  Ответить  
 
 автор: speedsoft   (12.05.2012 в 14:14)   письмо автору
 
   для: roma67   (12.05.2012 в 13:54)
 

<?php

$class = new class();
$list = explode('|',$txt);
foreach ($list as $item){
$class->$item = '';
}

?>

PHP не притязателен к тому, что свойство создается на лету, хотя часто это и не очень хорошо, но бывает нужно

  Ответить  
 
 автор: roma67   (12.05.2012 в 14:24)   письмо автору
 
   для: speedsoft   (12.05.2012 в 14:14)
 

Спасибо. И правда.
А это документированный способ или предусмотрен иной?

  Ответить  
 
 автор: speedsoft   (12.05.2012 в 15:36)   письмо автору
 
   для: 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.

  Ответить  
 
 автор: roma67   (12.05.2012 в 21:12)   письмо автору
 
   для: speedsoft   (12.05.2012 в 15:36)
 

Здорово. Вы не пропадайте,. День, два пройдет, я хотел бы с Вами пообщаться.
Могу оставить реквизиты для связи. Тут я конечно инициирую потребность в общении, в деле.
Хотите вы оставьте. Я не хочу растеряться

  Ответить  
 
 автор: speedsoft   (12.05.2012 в 23:49)   письмо автору
 
   для: roma67   (12.05.2012 в 21:12)
 

аська четыре-семь, девять-сем, ноль, четыре-четыре-восемь

но т.к. работы очень много, уделить оч. много времени не смогу ))

Да и на форуме есть люди более компетентные. Но если это не останавливает, то пожалуйста, стучите :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования