class System {
public $content;
public $errors = array();
function someMethod() {}
}
$sys = new System();
$sys->errors[] = "Какая-то ошибка";
$sys->errors[] = "Еще ошибка";
$sys->content .= "Контент 1";
$sys->content .= "Контент 2";
Вопрос в том (возможно глупый, уж простите), можно ли не писать "[]" или "." чтоб класс автоматом создавал массив или делел конкатацию строк?
Спустя 5 минут, 25 секунд (30.06.2011 - 11:20) Oyeme написал(а):
В данном случаи тогда будет не свойства класса а метод в котором происходит добавления значений в массив.
Например:
Например:
$sys->content('Контент 1');
-----------------
public function content($data){
$this->content[] = $data;
}
Спустя 2 минуты, 36 секунд (30.06.2011 - 11:23) Renden написал(а):
Oyeme
С методом то все понятно, но просто хотелось бы писать в стандартном виде:
С методом то все понятно, но просто хотелось бы писать в стандартном виде:
$что-то = чему-то; //т.е без скобок, нельзя никак, там через __construct или еще какметодусвойству сказать что он массив например?
Спустя 13 минут, 42 секунды (30.06.2011 - 11:36) sharki написал(а):
Всегда это удивляло, почему бы не запустить свой код, и не посмотреть содержимое массива ?
Спустя 4 минуты, 27 секунд (30.06.2011 - 11:41) Oyeme написал(а):
class System {
public $content;
public $errors = array();
public function content($data){
$this->content[] = $data;
}
public function __set( $name,$value )
{
switch ( $name )
{
case 'contentF':
return $this->content[] = $value;
break;
}
}
}
$sys = new System();
$sys->contentF ="test1";
$sys->contentF ="test2";
print_r($sys->content);
Спустя 6 минут, 44 секунды (30.06.2011 - 11:47) T1grOK написал(а):
Ну, а чтобы не путаться с разными свойствами можно еще добавить __get
class System {
public $_content = '';
public $_errors = array();
function __set($name, $val){
if($name=='errors'){
$this->_errors[] = $val;
}
if($name=='content'){
$this->_content .= $val;
}
}
function __get($name){
if($name=='errors'){
return $this->_errors;
}
if($name=='content'){
return $this->_content;
}
}
function someMethod() {}
}
$sys = new System();
$sys->errors = "Какая-то ошибка";
$sys->errors = "Еще ошибка";
$sys->content = "Контент 1";
$sys->content = "Контент 2";
Спустя 2 минуты, 36 секунд (30.06.2011 - 11:50) T1grOK написал(а):
По идее это все можно реализовать с помощью интерфейсов. Но к сожалению я не знаю как, потому что опыта с ними практически нет.
Спустя 7 минут, 57 секунд (30.06.2011 - 11:58) sharki написал(а):
T1grOK
Интерфейс лишь описывает св-ва и метода класса, НЕ РЕАЛИЗУЯ их
Интерфейс лишь описывает св-ва и метода класса, НЕ РЕАЛИЗУЯ их
Спустя 6 минут, 50 секунд (30.06.2011 - 12:05) linker написал(а):
class System
{
private $content = '';
private $errors = array();
public function __set($name, $value)
{
if ($name == 'errors')
$this->errors[] = $value;
else
if ($name == 'content')
$this->content .= $value;
}
public function __get($name)
{
if ($name == 'errors')
return $this->errors;
else
if ($name == 'content')
return $this->content;
}
}
$object = new System();
$object->errors = 'Hello';
print_r($object->errors);
$object->content = 'Hello';
$object->content = ' world';
echo $object->content;
Спустя 10 минут, 35 секунд (30.06.2011 - 12:15) T1grOK написал(а):
linker - Это работать не будет. __set() и __get вызывается для неопределенного свойства.
Спустя 2 минуты, 9 секунд (30.06.2011 - 12:18) linker написал(а):
T1grOK
А ты проверь сначала. __set() и __get() вызываются для всего, что не является public. Тоже касается и __call().
А ты проверь сначала. __set() и __get() вызываются для всего, что не является public. Тоже касается и __call().
Спустя 2 часа, 36 минут, 56 секунд (30.06.2011 - 14:54) Renden написал(а):
Спасибо всем, отходил, сдавал город, в 4 раз, наконец сдал
И еще вопросик про правописание можно ли писать свойство класа с большой буквы или заглавными?(понятное дело что можно физичеси, а по стандартам как правильнее?)
И еще вопросик про правописание можно ли писать свойство класа с большой буквы или заглавными?(понятное дело что можно физичеси, а по стандартам как правильнее?)
Спустя 44 минуты (30.06.2011 - 15:38) linker написал(а):
Renden
Это уже ты сам решаешь, как тебе удобнее.
Это уже ты сам решаешь, как тебе удобнее.
Спустя 2 часа, 20 минут, 37 секунд (30.06.2011 - 17:59) Oyeme написал(а):
Название класса большими
Название методов малеьнькими
Назавание свойств малеьнькими
П.С большими - заглаваная только
Название методов малеьнькими
Назавание свойств малеьнькими
П.С большими - заглаваная только
Спустя 17 часов, 35 минут, 10 секунд (1.07.2011 - 11:34) Guest написал(а):
Цитата (Oyeme @ 30.06.2011 - 14:59) |
Название класса большими Название методов малеьнькими Назавание свойств малеьнькими |
название класса не большими, а с заглавной буквы)