Форумы портала PHP.SU » Разное » Прочее » PHP Test by PHP.SU

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

16. EuGen - 20 Марта, 2012 - 15:04:46 - перейти к сообщению
Модифицируем задачу.
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 возвращал квадрат аргумента.
17. Champion - 21 Марта, 2012 - 07:17:58 - перейти к сообщению
Хм. Задача стала заметно сложнее. Надо думать)
18. Мелкий - 23 Марта, 2012 - 18:02:14 - перейти к сообщению
И ещё о деструкторах:
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. }


А решения для модифицированный задачки выше - не придумал.
19. Bio man - 21 Мая, 2012 - 13:58:58 - перейти к сообщению
мои решения (Отобразить)
20. EuGen - 21 Мая, 2012 - 14:26:07 - перейти к сообщению
Обращаю Ваше внимание что в спойлерах основного сообщения скрыты ответы, так что желающие узнать свой результат могут не ждать, к примеру, моего комментария и посчитать количество баллов самостоятельно (0 - неверный ответ, 1 - неполный, 2 - верный). Правда, скорее всего, будет сложно оценить свои знания в случае, если ответ "между неполным и неверным" или "между неполным и верным", но здесь и я могу ошибиться.
Если не ошибаюсь, сейчас лидирует Мелкий - у него 25 баллов из 60 возможных (42%)
21. Мелкий - 14 Января, 2013 - 08:41:52 - перейти к сообщению
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));

Какой будет результат и почему?
22. EuGen - 14 Января, 2013 - 08:50:10 - перейти к сообщению
Спойлер (Отобразить)
23. Мелкий - 14 Января, 2013 - 09:10:28 - перейти к сообщению
Спойлер (Отобразить)
24. EuGen - 14 Января, 2013 - 09:18:29 - перейти к сообщению
Добавил в оригинальный текст. Правда, пока осознал вызов __isset - и писал это в спойлер теста, Вы уже успели дать пояснение. Впрочем, "хронологию разбора" я сохранил в "upd".

 

Powered by ExBB FM 1.0 RC1