Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: На раздумку [2]

 PHP.SU

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


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

> Описание: Реализация класса - отладки.
IllusionMH
Отправлено: 03 Декабря, 2013 - 12:22:29
Post Id



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


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


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




DeertOff пишет:
что-бы каждый разработчик решал свои ошибки

Документирование интерфейсов + юнит тесты.
 
 Top
Мелкий Супермодератор
Отправлено: 03 Декабря, 2013 - 12:24:06
Post Id



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


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


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




DeertOff пишет:
Они рубят скрипт а мне надо проверить всё что есть. До конца.

Неправильная логика. Если есть ошибка на тесте - самое лучшее, что можно сделать - сдохнуть и отдать первую же ошибку.

Поясню на вашем же дальнейшем примере:
DeertOff пишет:
работает несколько разработчиков, каждый может допустить ошибку, идея в том что-бы каждый разработчик решал свои ошибки.

Я работаю над классом, допустим, публично-доступного REST API - проверки доступа, входных данных и т.д. В работе я опираюсь на класс внутреннего API, который разрабатывает мой коллега.
И какой смысл при уже обнаруженной ошибке внутреннего апи проверять внешнее апи и пинать меня ошибками в нём? Оно гарантированно выдаст неверный результат и я тут ни при чём.


-----
PostgreSQL DBA
 
 Top
DeertOff
Отправлено: 03 Декабря, 2013 - 12:33:31
Post Id



Гость


Покинул форум
Сообщений всего: 126
Дата рег-ции: Июль 2011  


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




У меня нету доступа к классу разрабатываемому пользователем. Возможно у него есть свой Exeption который обрабатывает ошибки. Написав свой поверх, получаеться ограничение, которое придется вносить в последующую реализацию.
(Добавление)
Все дело в том чтобы не прекращать разработку при обнаружени ошибки своего "отдельного модуля". Ютин тесты - это и нужно, только для нескольких разрабов.
Кроме как парсинг нечего в голову не приходит...

(Отредактировано автором: 03 Декабря, 2013 - 12:49:02)

 
 Top
caballero
Отправлено: 03 Декабря, 2013 - 13:12:45
Post Id


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


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


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




какая то подпольная команда. несколько разработчиков и не имеют доступа к классам друг друга. Нормальные команды наоборот работают через системы версионирования.

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


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
IllusionMH
Отправлено: 03 Декабря, 2013 - 13:21:30
Post Id



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


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


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





caballero, ТС решил устроить Die Hard 4.1
 
 Top
EuGen Администратор
Отправлено: 03 Декабря, 2013 - 14:32:15
Post Id


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


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


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




PHP:
скопировать код в буфер обмена
  1. interface Logger
  2. {
  3.    public function log($string, $resource=null);
  4. }
  5.  
  6. class Weird implements Logger
  7. {
  8.    private $class    = null;
  9.    private $instance = null;
  10.    public function __construct($class, $instance=null)
  11.    {
  12.       if(!class_exists($class))
  13.       {
  14.          throw new InvalidArgumentException('Could not infect class '.$class);
  15.       }
  16.       if(isset($instance) && !($instance instanceof $class))
  17.       {
  18.          throw new InvalidArgumentException('Unstuck');
  19.       }
  20.       $this->class    = $class;
  21.       $this->instance = $instance;
  22.    }
  23.  
  24.    public function log($string, $resource=null)
  25.    {
  26.       echo("I've eaten ".$string.PHP_EOL);
  27.    }
  28.  
  29.    public function __call($method, $args)
  30.    {
  31.       if(isset($this->instance) && !method_exists($this->instance, $method))
  32.       {
  33.          throw new Exception('I am a little pony');
  34.       }
  35.       $metadata = isset($this->instance)
  36.                ?(new ReflectionObject($this->instance))->getMethod($method)
  37.                :new ReflectionMethod($this->class, $method);
  38.       if($metadata->isPrivate())
  39.       {
  40.          throw new Exception("I don't trust this to you");
  41.       }
  42.       $this->log('call of '.$this->class.'::'.$method);
  43.       return call_user_func_array([isset($this->instance)
  44.                                   ?$this->instance
  45.                                   :$this->class, $method], $args);
  46.    }
  47. }
  48.  
  49. class Foo
  50. {
  51.    public function a()
  52.    {
  53.       echo uniqid(1).__FUNCTION__.PHP_EOL;
  54.    }
  55.  
  56.    public static function b()
  57.    {
  58.       echo uniqid(1).__FUNCTION__.PHP_EOL;
  59.    }
  60. }
  61.  
  62. $foo   = new Foo();
  63. $weird = new Weird('Foo', $foo);
  64. $weird->a();
  65. $weird = new Weird('Foo');
  66. $weird->b();


?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
esterio
Отправлено: 03 Декабря, 2013 - 14:40:57
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




EuGen
Хорошая реализация, только дебажить приватные методы не получиться
 
 Top
EuGen Администратор
Отправлено: 03 Декабря, 2013 - 15:08:55
Post Id


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


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


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




esterio пишет:
Хорошая реализация, только дебажить приватные методы не получиться

Не получится. Впрочем, сама идея такого отладчика - гм, странная. Всё же добавил проверку приватности.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
DeertOff
Отправлено: 04 Декабря, 2013 - 05:11:08
Post Id



Гость


Покинул форум
Сообщений всего: 126
Дата рег-ции: Июль 2011  


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




Большое спасибо!
Ушёл ковыряться с Reflection API... Радость

(Отредактировано автором: 04 Декабря, 2013 - 05:15:51)

 
 Top
esterio
Отправлено: 04 Декабря, 2013 - 11:50:54
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




DeertOff
EuGen пишет:
сама идея такого отладчика - гм, странная
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB