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

Купить VPN
Профессиональная разработка сайта
Фото с телефона до/после обработки [+]
Модульное тестирование
+3
Введение
Модульное тестирование это то, чем вы пользуетесь постоянно во время разработки и даже не замечаете этого. В процессе написания кода вы по многу раз запускаете его, чтобы убедится в том, что он работает ожидаемым образом. Так почему бы не автоматизировать этот процесс? Для этих целей применяется "Автоматизированное модульное тестирование" (АМТ) и "Модульные тесты".

АМТ решает следующие важные задачи:
* Позволяет выявить ошибку на раннем этапе разработки, до того, как код уйдет в работу. Своевременное выявление ошибки так же упрощает ее локализацию и исправление
* Позволяет быстро удостоверится в том, что вносимые в систему изменения не поломали старый код
*...
Автор: (08.06.2016 / 01:14)
Просмотры: 1001
Комментарии (9) »
Прототипная объектная ориентация
+6
Предыстория
Приветствую. Я уже не раз говорил, что язык JS я считаю если не самым любимым, то как минимум вторым (после C++). Это связано с тем, что благодаря этому, казалось бы, сложному языку, я постиг один из "дзенов" программирования, а именно великую парадигму прототипной ориентации объектно-ориентированного языка. Многие программисты, не знакомые с этим, не побоюсь этого слова, чистой реализацией, считают ее более сложной и даже не объектной, но на самом деле это не так, скорее наоборот, классическая объектная ориентация оказывается всего лишь надстройкой "сахара" над этой парадигмой.
Не так давно, я начал изучать язык скриптов известного редактора Vim, и сразу...
Автор: (29.01.2014 / 09:20)
Просмотры: 1939
Комментарии (4) »
Автозагрузка классов с namespace
-2
Всем привет))
Сегодня я опишу как можно организовать автоматическую загрузку классов с помощью пространств имен (namespace) точнее как это организовал я))
Итак как и везде наш проект имеет индескную страницу которая лежит в самом корне проекта (не зависимо от того в какой директории находится сам проект) так вот сначала мы и вычислим эту директорию. Для этого пропишем в нашем индексном файле следующее
<?php
define('DOCROOT', realpath(dirname(__FILE__)) . DIRECTORY_SEPARATOR);
?>
константа DOCROOT будет содержать полный путь к корневой директории.
затем нам нужно сохранить путь к корневой директории в include_path
<?php
set_include_path(DOCROOT);
?>
далее мы должны вызвать функцию регистрации...
Автор: (29.01.2014 / 02:07)
Просмотры: 3264
Комментарии (5) »
Пишем класс мультиязычности сайта на php
+3
Доброго времени суток!
Вот решил написать простой и удобный класс для реализации мультиязычности для Вашего сайта.
Итак начнем!
Структура у нас будет следующего вида:
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',...

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

<?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.2013 / 13:46)
Просмотры: 1406
Комментарии (2) »
Безопасность
+3


Предисловие

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

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

Немного теоретических размышлений
Изучая одну открытую платформу, обратил внимание на отличный подход к локализации (переводу) данных и решил "поковыряться поглубже". Если говорить о локализации, стоит выделить три основных типа данных, которые следует локализовать:
1. Сущности - то есть объекты, с которыми мы работаем. Сюда можно отнести такие понятия как login - логин; password -...
Автор: (22.05.2013 / 00:41)
Просмотры: 1273
Комментарии (1) »
Простой шаблонизатор
-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.2013 / 23:26)
Просмотры: 1229
Комментарии (14) »
Абстрактные классы и методы
+8
Немного теории
Абстракция в ООП тесно связана с такими важными характеристиками, как наследование и полиморфизм. В частности, к абстракции прибегают с целью упрощения объекта, выделения общих, важных в данном контексте закономерностей и отвлечения от несущественных деталей.
Во время проектирования класса, часто можно столкнуться с необходимостью вынесения общей структуры нескольких классов в один общий, но не законченный для полноценного использования класс. Для этих целей хорошо подойдет абстрактный класс, который будет содержать некоторую общую структуру (свойства и методы), но не достаточную, для его полноценного использования (инстанциирования).

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


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

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