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

Форум PHP

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

 

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

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

тема: проблемы с __get() и __set()
 
 автор: denok   (13.01.2008 в 15:10)   письмо автору
 
 

Здравствуйте всем.
вот вопрос небольшой. Есть класс:


<?php

class Disc {

    private 
$attrs = array( 'name'=> ""'songs'=>array());

    
// ----------------------------------------------------------------


    
protected function __get$attrName ) {
        if ( 
array_key_exists$attrName$this->attrs )) {
            return 
$this->attrs[$attrName];
        }
        else {
            throw new 
Exception("<b>Ошибка</b>: свойства \"$attrName\" не существует");
        }        
    }

    protected function 
__set$attrName$attrValue ) {
        if ( 
array_key_exists$attrName$this->attrs )) {
            
$this->attrs[$attrName] = $attrValue;
        }
        else {
            throw new 
Exception("<b>Ошибка</b>: свойства \"$attrName\" не существует");
        }        
    }
}

////////////////////////////////////////////////////////////////////////


try {
    
$foo = new Disc();
    
$foo->name "tra-la-la";
    
$foo->songs[] = "bla-bla-bla"// на этой строке 'Notice: ...' возникает
    
print $foo->songs[0];
    
}
catch (
Exception $excp) {
    print 
"{$excp->getMessage()}\n";
}

?>


при выполнении возникает такая штука: "Notice: Indirect modification of overloaded property Disc::$songs has no effect in...".
не получается почему-то присвоить массиву значение, используя стандартный синтаксис.

подскажите, это я что-то неправильно сделал или это глюк какой-то?

заранее спасибо!

   
 
 автор: cheops   (14.01.2008 в 14:48)   письмо автору
 
   для: denok   (13.01.2008 в 15:10)
 

Хм... эти методы проде как не предназначены для работы с массивами.

   
Rambler's Top100
вверх

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