Этот сайт не наркоманов. Это сайт программистов.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха информатор 3.1
Еще более удобное оповещение о флуде!

Краснодарское время: 25 Май, 2012, 01:16:02

Страниц: [1]
Печать
Автор Тема: в чем баг?  (Прочитано 828 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Law1iet    ↓ 
08 Июль, 2011, 12:04:06
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 8
Сила слова: 0

PHP

interface Observer
{
    function notify($obj);
}
 
class ExchangeRate
{
    static private $instance = NULL;
    private $observers = array();
    private $exchange_rate;
    private function ExchangeRates()
    {
    }
    static public function getInstance()
    {
        if (self::$instance == NULL)
        {
            self::$instance = new ExchangeRate();
        }
        return self::$instance;
    }
    public function getExchangeRate()
    {
        return $this->$exchange_rate;
    }
    public function setExchangeRate($new_rate)
    {
        $this->$exchange_rate = $new_rate;
        $this->notifyObservers();
    }
    public function registerObserver($obj)
    {
        $this->observers[] = $obj;
    }
    function notifyObservers()
    {
        foreach($this->observers as $obj)
        {
            $obj->notify($this);
        }
    }
}
 
class ProductItem implements Observer
{
    public function __construct()
    {
        ExchangeRate::getInstance()->registerObserver($this);
    }
    public function notify($obj)
    {
        if ($obj instanceof ExchangeRate)
        {
            // Update exchange rate data
            print "Received update!\n";
        }
    }
}
 

$product1 = new ProductItem();
$product2 = new ProductItem();
 
$q = new ExchangeRate();
$q->setExchangeRate(4);
 
ExchangeRate::getInstance()->setExchangeRate(4);
 

пример из книжки. Должно выдавать 2 радостных сообщения "Received update!\n", а выдает
 
Fatal error: Cannot access empty property in Z:\home\localhost\www\newproject\observerclass.php on line 29 :(
 
собственно, ошибка в методе setExchangerate, но я не понимаю какая :)
Спустя 3 минуты 44 секунды добавил
чет не вижу кнопку отредактировать :)
 
строки
 
$q = new ExchangeRate();
$q->setExchangeRate(4);
закоментите, это мои эксперименты))
Записан
phpdude    ↓ 
08 Июль, 2011, 12:07:25 , спустя 3 минуты 19 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: д-о-х-у-я!
Сила слова: 1.66

return $this->$exchange_rate;
папке передай чтобы очки купил :-)
 
перед букой Ёб лишний доллар
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
Law1iet    ↓ 
08 Июль, 2011, 12:13:37 , спустя 6 минут 12 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 8
Сила слова: 0

ололо, домо аригато))
Записан
kostyl    ↓ 
08 Июль, 2011, 12:17:17 , спустя 3 минуты 40 секунд
НЕ ХУЕТА! ХУЕТА!

занедельный антипаттерн
Группа: Джедаи

Карма: 60
Сообщений: 3522
Сила слова: 1.7

phpdude, надо при регистрации написать - "Редактировать посты надо заслужить блядь"
Записан

качество жизни обратно пропорционально количеству лени
phpdude    ↓ 
08 Июль, 2011, 12:33:03 , спустя 15 минут 46 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: д-о-х-у-я!
Сила слова: 1.66


ололо, домо аригато))
папке скажи чтобы денег лучше вернул))) ну и с оригато его конечно xDDD
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
KaFe    ↓ 
08 Июль, 2011, 01:32:59 , спустя 59 минут 56 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Сраный Тролль

Карма: -13346
Сообщений: 1727
Сила слова: -772.79

Дяденька знаю, где у вас ошибка. В коде епт :D
Записан

Animator    ↓ 
08 Июль, 2011, 02:04:54 , спустя 31 минуту 55 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 3
Сообщений: 200
Сила слова: 1.5

пример из книжки!? из таких книжек 7 лет назад нелохие "баяны" получались...
либо я таки в окопе, либо кое кто пытается козла доить :)
Записан
kostyl    ↓ 
08 Июль, 2011, 11:32:46 , спустя 9 часов 27 минут 52 секунды
НЕ ХУЕТА! ХУЕТА!

занедельный антипаттерн
Группа: Джедаи

Карма: 60
Сообщений: 3522
Сила слова: 1.7

есть охуенные книжки но с кучей ошибок в коде... сразу скил повышаешь )))
Записан

качество жизни обратно пропорционально количеству лени
Law1iet    ↓ 
09 Июль, 2011, 12:05:02 , спустя 12 часов 32 минуты 16 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 8
Сила слова: 0

PHP

/*echo "<p>";
ReflectionClass::export("reflectionclass");
echo "</p>";
*/

class ClassOne
{
    function callClassOne() {
        print "In Class One\n";
    }
}
class ClassTwo {
    function callClassTwo() {
        print "In Class Two\n";
    }
}
class ClassOneDelegator {
    private $targets;
    function __construct() {
        $this->target[] = new ClassOne();
    }
    function addObject($obj) {
        $this->target[] = $obj;
    }
    function __call($name, $args) {
        foreach ($this->target as $obj) {
            $r = new ReflectionClass($obj);
            if ($method = $r->getMethod($name)) {
                if ($method->isPublic() && !$method->isAbstract()) {
                    return $method->invoke($obj, $args);
                }
            }
        }
    }
}
$obj = new ClassOneDelegator();
$obj->addObject(new ClassTwo());
$obj->callClassOne();
$obj->callClassTwo();
 
тема делегирование и рефлексии
 
выводит фатальную ошибку
 
Fatal error: Uncaught exception 'ReflectionException' with message 'Method callClassTwo does not exist' in Z:\home\localhost\www\newproject\reflections.php:28 Stack trace: #0 Z:\home\localhost\www\newproject\reflections.php(28): ReflectionClass->getMethod('callClassTwo') #1 [internal function]: ClassOneDelegator->__call('callClassTwo', Array) #2 Z:\home\localhost\www\newproject\reflections.php(39): ClassOneDelegator->callClassTwo() #3 {main} thrown in Z:\home\localhost\www\newproject\reflections.php on line 28
 
а надо 2 радостных сообщения. Лишних долларов вроде нету :(
 
помогите плз.!!...
Спустя 1 минуту 27 секунд добавил
и, да, как выводить в форматированном виде (ReflectionClass::export("reflectionclass"))? т.е исходный код адекватен, с переходами между строк, а браузер всё в одну пишет.
Записан
phpdude    ↓ 
09 Июль, 2011, 12:23:59 , спустя 18 минут 57 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: 20790
Сила слова: 1.66

Law1iet, гразы мануал. http://ru2.php.net/manual/en/reflectionclass.hasmethod.php
 
папке передавай привет, пусть объявится в скайп падонаг
Спустя 52 секунды добавил
т.е исходный код адекватен, с переходами между строк, а браузер всё в одну пишет.
ты прав, хтмл ты тоже по видеокурсам учил? :-)
 
HTML
<pre> вот тут блядь будут все отступы и пробелы  фффф                 ввввввв           фы
 

фыфф</pre>
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
Law1iet    ↓ 
09 Июль, 2011, 01:10:53 , спустя 46 минут 54 секунды
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 8
Сила слова: 0

какой папке о чем ты :D провал, да, хтмл по видео :D пхп вот по учебнику надо.
 
уууу документация... бррр... гляньте, мб все таки найдете ошибку в исходнике примера @_@
Записан
phpdude    ↓ 
09 Июль, 2011, 01:49:39 , спустя 38 минут 46 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: д-о-х-у-я!
Сила слова: 1.66

уууу документация... бррр... гляньте, мб все таки найдете ошибку в исходнике примера @_@
носом ткнуть? так я вроде ткнул уже ...
 
надо так короче
 
PHP
$r = new ReflectionClass($obj);
            if ($r->hasMethod($name) && ($method = $r->getMethod($name))) {
                if ($method->isPublic() && !$method->isAbstract()) {
                    return $method->invoke($obj, $args);
                }
            }
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
Страниц: [1]
Печать
 

Перейти в:  

Этот топик скрыли: adw0rd