PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): « 1 [2]   

> Описание: Сборник задач, в разное время возникавших на моих проектах и на форуме
EuGen Администратор
Отправлено: 20 Марта, 2012 - 15:04:46
Post Id


Профессионал


Покинул форум
Сообщений всего: 9098
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Модифицируем задачу.
0. Нельзя использовать bindTo (PHP может быть версии 5.3)
1. Нельзя использовать classkit (он может быть не установлен)
2. Класс выглядит так:
PHP:
скопировать код в буфер обмена
  1. class A
  2. {
  3.     private $r = null;
  4.     function __construct()
  5.     {
  6.        $this->r=function($x)
  7.        {
  8.           return $x;
  9.        };
  10.     }
  11.     function getCall($x)
  12.     {
  13.        //as of php 5.3 I can't deference as $this->r($x) ...
  14.        $fnCall=$this->r;
  15.        return $fnCall($x);
  16.     }
  17. }
  18. $Q     = new A;
  19. $mTest = $Q->getCall(3);
  20. //...
  21. var_dump($Q, $mTest);

Задача - модифицировать многоточие так, чтобы getCall возвращал квадрат аргумента.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Champion Супермодератор
Отправлено: 21 Марта, 2012 - 07:17:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 4353
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Хм. Задача стала заметно сложнее. Надо думать)
 
 Top
Мелкий Супермодератор
Отправлено: 23 Марта, 2012 - 18:02:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 11571
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 563 раз(а)




И ещё о деструкторах:
PHP:
скопировать код в буфер обмена
  1. class foo {
  2. public function __construct() {
  3. throw new exception;
  4. }
  5. public function __destruct() {
  6. echo 'destructor';
  7. }
  8. }
  9. try {
  10. $a = new foo;
  11. } catch (exception $e) {
  12. }


А решения для модифицированный задачки выше - не придумал.


-----
PostgreSQL DBA
 
 Top
Bio man
Отправлено: 21 Мая, 2012 - 13:58:58
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2748
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 51 раз(а)




мои решения (Отобразить)


Отредактировано администратором: EuGen, 21 Мая, 2012 - 14:19:08
Прокомментирую:
Спойлер (Отобразить)

Текущий балл: 17
 
 Top
EuGen Администратор
Отправлено: 21 Мая, 2012 - 14:26:07
Post Id


Профессионал


Покинул форум
Сообщений всего: 9098
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Обращаю Ваше внимание что в спойлерах основного сообщения скрыты ответы, так что желающие узнать свой результат могут не ждать, к примеру, моего комментария и посчитать количество баллов самостоятельно (0 - неверный ответ, 1 - неполный, 2 - верный). Правда, скорее всего, будет сложно оценить свои знания в случае, если ответ "между неполным и неверным" или "между неполным и верным", но здесь и я могу ошибиться.
Если не ошибаюсь, сейчас лидирует Мелкий - у него 25 баллов из 60 возможных (42%)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Мелкий Супермодератор
Отправлено: 14 Января, 2013 - 08:41:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 11571
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 563 раз(а)




PHP:
скопировать код в буфер обмена
  1. class foo {
  2.         public function __get($name) {
  3.                 //для очевидности, значение есть всегда
  4.                 return $name;
  5.                 }
  6.         }
  7. $f = new foo;
  8. var_dump(empty($f->el));

Какой будет результат и почему?


-----
PostgreSQL DBA
 
 Top
EuGen Администратор
Отправлено: 14 Января, 2013 - 08:50:10
Post Id


Профессионал


Покинул форум
Сообщений всего: 9098
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Спойлер (Отобразить)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Мелкий Супермодератор
Отправлено: 14 Января, 2013 - 09:10:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 11571
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 563 раз(а)




Спойлер (Отобразить)


-----
PostgreSQL DBA
 
 Top
EuGen Администратор
Отправлено: 14 Января, 2013 - 09:18:29
Post Id


Профессионал


Покинул форум
Сообщений всего: 9098
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Добавил в оригинальный текст. Правда, пока осознал вызов __isset - и писал это в спойлер теста, Вы уже успели дать пояснение. Впрочем, "хронологию разбора" я сохранил в "upd".


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Прочее »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB