ООП (Articles: 27)

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

АМТ решает следующие важные задачи:
* Позволяет выявить ошибку на раннем этапе разработки, до того, как код уйдет в работу. Своевременное выявление ошибки так же упрощает ее локализацию и исправление
* Позволяет быстро удостоверится в том, что вносимые в систему изменения не поломали старый код
*... Author: (08.06.2016 / 01:14)
Views: 1431
Comments (9) »
Предыстория
Приветствую. Я уже не раз говорил, что язык JS я считаю если не самым любимым, то как минимум вторым (после C++). Это связано с тем, что благодаря этому, казалось бы, сложному языку, я постиг один из "дзенов" программирования, а именно великую парадигму прототипной ориентации объектно-ориентированного языка. Многие программисты, не знакомые с этим, не побоюсь этого слова, чистой реализацией, считают ее более сложной и даже не объектной, но на самом деле это не так, скорее наоборот, классическая объектная ориентация оказывается всего лишь надстройкой "сахара" над этой парадигмой.
Не так давно, я начал изучать язык скриптов известного редактора Vim, и сразу... Author: (29.01.2014 / 09:20)
Views: 2353
Comments (4) »
Всем привет))
Сегодня я опишу как можно организовать автоматическую загрузку классов с помощью пространств имен (namespace) точнее как это организовал я))
Итак как и везде наш проект имеет индескную страницу которая лежит в самом корне проекта (не зависимо от того в какой директории находится сам проект) так вот сначала мы и вычислим эту директорию. Для этого пропишем в нашем индексном файле следующее
<?php
define('DOCROOT', realpath(dirname(__FILE__)) . DIRECTORY_SEPARATOR);
?>
константа DOCROOT будет содержать полный путь к корневой директории.
затем нам нужно сохранить путь к корневой директории в include_path
<?php
set_include_path(DOCROOT);
?>
далее мы должны вызвать функцию регистрации... Author: (29.01.2014 / 02:07)
Views: 3733
Comments (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',...
Author: (06.08.2013 / 01:41)
Views: 3616
Comments (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]
Author: (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) »
высмотрел в 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...
Author: (07.05.2013 / 23:26)
Views: 1619
Comments (14) »
Немного теории
Абстракция в ООП тесно связана с такими важными характеристиками, как наследование и полиморфизм. В частности, к абстракции прибегают с целью упрощения объекта, выделения общих, важных в данном контексте закономерностей и отвлечения от несущественных деталей.
Во время проектирования класса, часто можно столкнуться с необходимостью вынесения общей структуры нескольких классов в один общий, но не законченный для полноценного использования класс. Для этих целей хорошо подойдет абстрактный класс, который будет содержать некоторую общую структуру (свойства и методы), но не достаточную, для его полноценного использования (инстанциирования).

Абстракция не только позволяет выделить общие части структуры классов в родительский объект, но и обеспечить дальнейшую... Author: (27.08.2012 / 09:29)
Views: 2048
Comments (1) »


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

Предыстория
Несколько недель назад мне понадобилось написать простенький модуль аутентификации клиента. Я не стал использовать сложные алгоритмы безопасности и включать множество полей, таких как IP или логин пользователя, просто в этом не было никакой необходимости. Все клиенты делились на: неавторизированных пользователей и администраторов - а значит, достаточно было
использовать только два поля: идентификатор и... Author: (02.08.2012 / 06:24)
Views: 1526
Comments (10) »
Top Articles / Tag Cloud / Search / Authors