Введение
Модульное тестирование это то, чем вы пользуетесь постоянно во время разработки и даже не замечаете этого. В процессе написания кода вы по многу раз запускаете его, чтобы убедится в том, что он работает ожидаемым образом. Так почему бы не автоматизировать этот процесс? Для этих целей применяется "Автоматизированное модульное тестирование" (АМТ) и "Модульные тесты".
АМТ решает следующие важные задачи:
* Позволяет выявить ошибку на раннем этапе разработки, до того, как код уйдет в работу. Своевременное выявление ошибки так же упрощает ее локализацию и исправление
* Позволяет быстро удостоверится в том, что вносимые в систему изменения не поломали старый код
*...
Author: Артур (08.06.2016 / 01:14)
Views: 1431
Comments (9)
»
ООП (Articles: 27)
Предыстория
Приветствую. Я уже не раз говорил, что язык JS я считаю если не самым любимым, то как минимум вторым (после C++). Это связано с тем, что благодаря этому, казалось бы, сложному языку, я постиг один из "дзенов" программирования, а именно великую парадигму прототипной ориентации объектно-ориентированного языка. Многие программисты, не знакомые с этим, не побоюсь этого слова, чистой реализацией, считают ее более сложной и даже не объектной, но на самом деле это не так, скорее наоборот, классическая объектная ориентация оказывается всего лишь надстройкой "сахара" над этой парадигмой.
Не так давно, я начал изучать язык скриптов известного редактора Vim, и сразу... Author: Артур (29.01.2014 / 09:20)
Views: 2353
Comments (4) »
Приветствую. Я уже не раз говорил, что язык JS я считаю если не самым любимым, то как минимум вторым (после C++). Это связано с тем, что благодаря этому, казалось бы, сложному языку, я постиг один из "дзенов" программирования, а именно великую парадигму прототипной ориентации объектно-ориентированного языка. Многие программисты, не знакомые с этим, не побоюсь этого слова, чистой реализацией, считают ее более сложной и даже не объектной, но на самом деле это не так, скорее наоборот, классическая объектная ориентация оказывается всего лишь надстройкой "сахара" над этой парадигмой.
Не так давно, я начал изучать язык скриптов известного редактора Vim, и сразу... Author: Артур (29.01.2014 / 09:20)
Views: 2353
Comments (4) »
Всем привет))
Сегодня я опишу как можно организовать автоматическую загрузку классов с помощью пространств имен (namespace) точнее как это организовал я))
Итак как и везде наш проект имеет индескную страницу которая лежит в самом корне проекта (не зависимо от того в какой директории находится сам проект) так вот сначала мы и вычислим эту директорию. Для этого пропишем в нашем индексном файле следующее
затем нам нужно сохранить путь к корневой директории в include_path
Views: 3733
Comments (5) »
Сегодня я опишу как можно организовать автоматическую загрузку классов с помощью пространств имен (namespace) точнее как это организовал я))
Итак как и везде наш проект имеет индескную страницу которая лежит в самом корне проекта (не зависимо от того в какой директории находится сам проект) так вот сначала мы и вычислим эту директорию. Для этого пропишем в нашем индексном файле следующее
<?php define('DOCROOT', realpath(dirname(__FILE__)) . DIRECTORY_SEPARATOR); ?>константа DOCROOT будет содержать полный путь к корневой директории.
затем нам нужно сохранить путь к корневой директории в include_path
<?php set_include_path(DOCROOT); ?>далее мы должны вызвать функцию регистрации... Author: KpuTuK (29.01.2014 / 02:07)
Views: 3733
Comments (5) »
Доброго времени суток!
Вот решил написать простой и удобный класс для реализации мультиязычности для Вашего сайта.
Итак начнем!
Структура у нас будет следующего вида:
Содержимое:
Создаем в папке system файл config.php.
Содержимое:
Views: 3616
Comments (6) »
Вот решил написать простой и удобный класс для реализации мультиязычности для Вашего сайта.
Итак начнем!
Структура у нас будет следующего вида:
dir: [b]/[/b] - dir: [b]i18n[/b] - file: [b]ru.php[/b] // тут будут переводы - dir: [b]system[/b] - file: [b]config.php[/b] // тут будут настройки - file: [b]lang.php[/b] // доп. функционал - file: [b]i18n.php[/b] // тут собственно сам класс - file: [b]index.php[/b]Создаем файл index.php.
Содержимое:
<?php include_once ('system/lang.php'); // Подключаем класс echo __('Test') . '<br />'; // проверка ?>Создаем папку system.
Создаем в папке system файл config.php.
Содержимое:
<?php $langs = array('ru',...Author: JustZero (06.08.2013 / 01:41)
Views: 3616
Comments (6) »
Добрый день!
Хочу представить Вам свой класс реализации мультиязычности для ваших проектов.
Views: 1839
Comments (2) »
Хочу представить Вам свой класс реализации мультиязычности для ваших проектов.
<?php /** * @author KpuTuK * @link http://kputuk.ru * @version 1.0.1 * @copyright (c) 2013 */ class language { /** * Массив выбранного пакета * @var array $language */ private $language = array(); /** * Загрузка выбранного пакета * @param string $language * @throws InvalidArgumentException */ function __construct($language) { if (is_string($language)) { if (file_exists('/language/'. $language .'.ini')) { $this->language = parse_ini_file('/language/'. $language .'.ini'); } else { $this->language = parse_ini_file('/language/default.ini'); } } else { throw new InvalidArgumentException('Недопустимый тип параметра. Ожидается [string] вместо ['. gettype($language) .'].'); } } /** *...[/string]Author: KpuTuK (08.07.2013 / 13:46)
Views: 1839
Comments (2) »
Предисловие
Я думаю многих заинтересует статья о безопасности web проектов, потому настало время. Я часто буду ссылаться на используемую мной архитектуру, но описываемые подходы можно использовать в любой системе (главное знать как).
Уровни безопасности
Многие программисты задумываясь о безопасности системы представляют единый, универсальный механизм, позволяющий защитить всю систему путем вызова (на пример) функции toDoWell или метода $security->work(), но к сожалению, такой подход не оправдывает себя, в результате получается комок грязного кода, который не защищает систему совсем. Подобная проблема имеет те же корни, что и все комки грязного кода в программировании - божественный объект. Данный антипаттерн говорит, что не следует... Author: Артур (28.05.2013 / 16:26)
Views: 1683
Comments (10) »
Предисловие
Почему ООП? Думается, для реализации мультиязычности в web ООП подходит отлично. Я думаю все читатели понимают, что под мультиязычностью в данной статье я буду понимать именно локализацию тех или иных компонентов системы, сюда не будет входить информация о создании переводчиков и подобного, это отдельная тема.
Немного теоретических размышлений
Изучая одну открытую платформу, обратил внимание на отличный подход к локализации (переводу) данных и решил "поковыряться поглубже". Если говорить о локализации, стоит выделить три основных типа данных, которые следует локализовать:
1. Сущности - то есть объекты, с которыми мы работаем. Сюда можно отнести такие понятия как login - логин; password -... Author: Артур (22.05.2013 / 00:41)
Views: 1690
Comments (1) »
Почему ООП? Думается, для реализации мультиязычности в web ООП подходит отлично. Я думаю все читатели понимают, что под мультиязычностью в данной статье я буду понимать именно локализацию тех или иных компонентов системы, сюда не будет входить информация о создании переводчиков и подобного, это отдельная тема.
Немного теоретических размышлений
Изучая одну открытую платформу, обратил внимание на отличный подход к локализации (переводу) данных и решил "поковыряться поглубже". Если говорить о локализации, стоит выделить три основных типа данных, которые следует локализовать:
1. Сущности - то есть объекты, с которыми мы работаем. Сюда можно отнести такие понятия как login - логин; password -... Author: Артур (22.05.2013 / 00:41)
Views: 1690
Comments (1) »
высмотрел в DCMS 7 легонький шаблонизатор и немножко его изменил под себя:
Views: 1619
Comments (14) »
<?php define('BASE_DIR', $_SERVER["DOCUMENT_ROOT"]); /** * Класс шаблонизатора */ class template { /* * $tpl_dir папка шаблонов (по умолчанию /tpl/) * $tpl_ras расширение шаблонов (по умолчанию .php) * $tpl_cache кеш шаблона * $tpl_var_value массив со значениями и переменными которые мы будем передавать шаблону */ public $tpl_dir = '/tpl/'; public $tpl_ras = '.php'; protected $tpl_cache = null; protected $tpl_var_value = array(); /* * $name название переменной которой задаем значения(е) * $value значения(е) которые мы задаем переменной */ public function assign($name, $value = null) { if (is_array($name)) { foreach ($name...Author: KpuTuK (07.05.2013 / 23:26)
Views: 1619
Comments (14) »
Немного теории
Абстракция в ООП тесно связана с такими важными характеристиками, как наследование и полиморфизм. В частности, к абстракции прибегают с целью упрощения объекта, выделения общих, важных в данном контексте закономерностей и отвлечения от несущественных деталей.
Во время проектирования класса, часто можно столкнуться с необходимостью вынесения общей структуры нескольких классов в один общий, но не законченный для полноценного использования класс. Для этих целей хорошо подойдет абстрактный класс, который будет содержать некоторую общую структуру (свойства и методы), но не достаточную, для его полноценного использования (инстанциирования).
Абстракция не только позволяет выделить общие части структуры классов в родительский объект, но и обеспечить дальнейшую... Author: Артур (27.08.2012 / 09:29)
Views: 2048
Comments (1) »
Абстракция в ООП тесно связана с такими важными характеристиками, как наследование и полиморфизм. В частности, к абстракции прибегают с целью упрощения объекта, выделения общих, важных в данном контексте закономерностей и отвлечения от несущественных деталей.
Во время проектирования класса, часто можно столкнуться с необходимостью вынесения общей структуры нескольких классов в один общий, но не законченный для полноценного использования класс. Для этих целей хорошо подойдет абстрактный класс, который будет содержать некоторую общую структуру (свойства и методы), но не достаточную, для его полноценного использования (инстанциирования).
Абстракция не только позволяет выделить общие части структуры классов в родительский объект, но и обеспечить дальнейшую... Author: Артур (27.08.2012 / 09:29)
Views: 2048
Comments (1) »
Введение
Как часто вас преследует чувство дежавю в программировании? Многие программисты не догадываются насколько важно это чувство. Оно свидетельствует о том, что пришло время обобщать классы для повторного использования кода!
Толчком, побудившим меня к написанию этой статьи, стала сегодняшняя ночь, а именно то самое чувство.
Предыстория
Несколько недель назад мне понадобилось написать простенький модуль аутентификации клиента. Я не стал использовать сложные алгоритмы безопасности и включать множество полей, таких как IP или логин пользователя, просто в этом не было никакой необходимости. Все клиенты делились на: неавторизированных пользователей и администраторов - а значит, достаточно было
использовать только два поля: идентификатор и... Author: Артур (02.08.2012 / 06:24)
Views: 1526
Comments (10) »