ООП (Статей: 27)

Введение
Модульное тестирование это то, чем вы пользуетесь постоянно во время разработки и даже не замечаете этого. В процессе написания кода вы по многу раз запускаете его, чтобы убедится в том, что он работает ожидаемым образом. Так почему бы не автоматизировать этот процесс? Для этих целей применяется "Автоматизированное модульное тестирование" (АМТ) и "Модульные тесты".

АМТ решает следующие важные задачи:
* Позволяет выявить ошибку на раннем этапе разработки, до того, как код уйдет в работу. Своевременное выявление ошибки так же упрощает ее локализацию и исправление
* Позволяет быстро удостоверится в том, что вносимые в систему изменения не поломали старый код
*...
Автор: Артур (08.06.16 / 01:14)
Просмотры: 845
Комментарии (9) »
Предыстория
Приветствую. Я уже не раз говорил, что язык JS я считаю если не самым любимым, то как минимум вторым (после C++). Это связано с тем, что благодаря этому, казалось бы, сложному языку, я постиг один из "дзенов" программирования, а именно великую парадигму прототипной ориентации объектно-ориентированного языка. Многие программисты, не знакомые с этим, не побоюсь этого слова, чистой реализацией, считают ее более сложной и даже не объектной, но на самом деле это не так, скорее наоборот, классическая объектная ориентация оказывается всего лишь надстройкой "сахара" над этой парадигмой.
Не так давно, я начал изучать язык скриптов известного редактора Vim, и сразу...
Автор: Артур (29.01.14 / 09:20)
Просмотры: 1819
Комментарии (4) »
Всем привет))
Сегодня я опишу как можно организовать автоматическую загрузку классов с помощью пространств имен (namespace) точнее как это организовал я))
Итак как и везде наш проект имеет индескную страницу которая лежит в самом корне проекта (не зависимо от того в какой директории находится сам проект) так вот сначала мы и вычислим эту директорию. Для этого пропишем в нашем индексном файле следующее

<?php
define('DOCROOT', realpath(dirname(__FILE__)) . DIRECTORY_SEPARATOR);
?>

константа DOCROOT будет содержать полный путь к корневой директории.
затем нам нужно сохранить путь к корневой директории в include_path

<?php
set_include_path(DOCROOT);
?>

далее мы должны вызвать функцию регистрации...
Автор: Олег (29.01.14 / 02:07)
Просмотры: 3131
Комментарии (5) »
Доброго времени суток!
Вот решил написать простой и удобный класс для реализации мультиязычности для Вашего сайта.
Итак начнем!
Структура у нас будет следующего вида:

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',...

Автор: JustZero (06.08.13 / 01:41)
Просмотры: 2810
Комментарии (6) »
Добрый день!
Хочу представить Вам свой класс реализации мультиязычности для ваших проектов.


<?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]

Автор: Олег (08.07.13 / 13:46)
Просмотры: 1262
Комментарии (2) »


Предисловие

Я думаю многих заинтересует статья о безопасности web проектов, потому настало время. Я часто буду ссылаться на используемую мной архитектуру, но описываемые подходы можно использовать в любой системе (главное знать как).

Уровни безопасности
Многие программисты задумываясь о безопасности системы представляют единый, универсальный механизм, позволяющий защитить всю систему путем вызова (на пример) функции toDoWell или метода $security->work(), но к сожалению, такой подход не оправдывает себя, в результате получается комок грязного кода, который не защищает систему совсем. Подобная проблема имеет те же корни, что и все комки грязного кода в программировании - божественный объект. Данный антипаттерн говорит, что не следует...
Автор: Артур (28.05.13 / 16:26)
Просмотры: 1105
Комментарии (10) »
Предисловие
Почему ООП? Думается, для реализации мультиязычности в web ООП подходит отлично. Я думаю все читатели понимают, что под мультиязычностью в данной статье я буду понимать именно локализацию тех или иных компонентов системы, сюда не будет входить информация о создании переводчиков и подобного, это отдельная тема.

Немного теоретических размышлений
Изучая одну открытую платформу, обратил внимание на отличный подход к локализации (переводу) данных и решил "поковыряться поглубже". Если говорить о локализации, стоит выделить три основных типа данных, которые следует локализовать:
1. Сущности - то есть объекты, с которыми мы работаем. Сюда можно отнести такие понятия как login - логин; password -...
Автор: Артур (22.05.13 / 00:41)
Просмотры: 1109
Комментарии (1) »
высмотрел в DCMS 7 легонький шаблонизатор и немножко его изменил под себя:

<?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...

Автор: Олег (07.05.13 / 23:26)
Просмотры: 1116
Комментарии (14) »
Немного теории
Абстракция в ООП тесно связана с такими важными характеристиками, как наследование и полиморфизм. В частности, к абстракции прибегают с целью упрощения объекта, выделения общих, важных в данном контексте закономерностей и отвлечения от несущественных деталей.
Во время проектирования класса, часто можно столкнуться с необходимостью вынесения общей структуры нескольких классов в один общий, но не законченный для полноценного использования класс. Для этих целей хорошо подойдет абстрактный класс, который будет содержать некоторую общую структуру (свойства и методы), но не достаточную, для его полноценного использования (инстанциирования).

Абстракция не только позволяет выделить общие части структуры классов в родительский объект, но и обеспечить дальнейшую...
Автор: Артур (27.08.12 / 09:29)
Просмотры: 1549
Комментарии (1) »


Введение
Как часто вас преследует чувство дежавю в программировании? Многие программисты не догадываются насколько важно это чувство. Оно свидетельствует о том, что пришло время обобщать классы для повторного использования кода!
Толчком, побудившим меня к написанию этой статьи, стала сегодняшняя ночь, а именно то самое чувство.

Предыстория
Несколько недель назад мне понадобилось написать простенький модуль аутентификации клиента. Я не стал использовать сложные алгоритмы безопасности и включать множество полей, таких как IP или логин пользователя, просто в этом не было никакой необходимости. Все клиенты делились на: неавторизированных пользователей и администраторов - а значит, достаточно было
использовать только два поля: идентификатор и...
Автор: Артур (02.08.12 / 06:24)
Просмотры: 1002
Комментарии (10) »
Топ статей / Облако тегов / Поиск / Авторы