babahalki
Постоялец
- Регистрация
- 6 Май 2016
- Сообщения
- 247
- Реакции
- 107
- Автор темы
- #1
Привет. Я пытаюсь делать форк CMS Simpla. Пока разработка идет "на кошках", т.е. все довольно просто, я просто представляю как это должно получится, открываю Geany (практически notepad) и начинаю писать.
Но чем дальше заходит дело, тем сложнее становится. Я начал программировать на php без теоретической подготовки, поэтому как это делать правильно не знаю. Основным источником решений и сразу мануалом является php.net. Перебором разных вариантов я пришел к следующему:
1. **х...чил что-то в своем блокноте
2. Нажал f5 в браузере - посмотрел что получилось.
Чтобы видеть ход выполнения функций и отслеживать результат их выполнения я использую библиотеку, которую увидел когда-то как пример самого простого способа отладки. В итоге весь код у меня выглядит вот так:
Т.е. по всем функциям происходит вывоз dtimer::log(), который записывает относительное время записи и количество используемой памяти в момент записи.
Где-то в самом конце скрипта делается вызов.
dtimer::show();
Который выводит таблицу из этих записей dtimer::log(), которые выполнялись в хронологическом порядке. Видно кол-во памяти, время выполнения, время выполнения в % от общего времени выполнения и время выполнения нарастающим итогом, т.е. время от первой записи.
Надеюсь, Вы еще не устали читать.
В итоге тестирование у меня получается одновременно с разработкой. Несмотря на то, что я стараюсь не усложнять, все равно какие-то связи между разрабатываемыми функциями возникают, чем их больше тем, сложнее держать все это в голове.
Так я полез читать про юнит тестирование. Установил себе phpunit и сейчас попытался сделать первый тест применительно к своим функциям.
Запускаю
Ну и сразу получаю.
Причина ошибки понятна, ведь у меня запуск из консоли.
Заставить это работать в консоли, подсовывая недостающие в консоли переменные?
Заставить это работать в браузере?
Как правильно?
Интересует как теоретическая часть, так и практическая.
Но чем дальше заходит дело, тем сложнее становится. Я начал программировать на php без теоретической подготовки, поэтому как это делать правильно не знаю. Основным источником решений и сразу мануалом является php.net. Перебором разных вариантов я пришел к следующему:
1. **х...чил что-то в своем блокноте
2. Нажал f5 в браузере - посмотрел что получилось.
Чтобы видеть ход выполнения функций и отслеживать результат их выполнения я использую библиотеку, которую увидел когда-то как пример самого простого способа отладки. В итоге весь код у меня выглядит вот так:
Код:
public function resize_($filename)
{
dtimer::log(__METHOD__ . " start $filename");
return 'done';
}
Т.е. по всем функциям происходит вывоз dtimer::log(), который записывает относительное время записи и количество используемой памяти в момент записи.
Где-то в самом конце скрипта делается вызов.
dtimer::show();
Который выводит таблицу из этих записей dtimer::log(), которые выполнялись в хронологическом порядке. Видно кол-во памяти, время выполнения, время выполнения в % от общего времени выполнения и время выполнения нарастающим итогом, т.е. время от первой записи.
Надеюсь, Вы еще не устали читать.
В итоге тестирование у меня получается одновременно с разработкой. Несмотря на то, что я стараюсь не усложнять, все равно какие-то связи между разрабатываемыми функциями возникают, чем их больше тем, сложнее держать все это в голове.
Так я полез читать про юнит тестирование. Установил себе phpunit и сейчас попытался сделать первый тест применительно к своим функциям.
Код:
<?php
use PHPUnit\Framework\TestCase;
require_once('/cygdrive/d/OSPanel/domains/rapida-dev/api/Simpla.php');
class StackTest extends TestCase
{
public function test_resize()
{
$s = new Simpla();
$res = $s->image->resize_();
$this->assertEquals('done', $res);
}
}
?>
Запускаю
Код:
phpunit test.php
Код:
There was 1 error:
1) StackTest::test_resize
Undefined index: SERVER_PROTOCOL
Заставить это работать в консоли, подсовывая недостающие в консоли переменные?
Заставить это работать в браузере?
Как правильно?
Интересует как теоретическая часть, так и практическая.