[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как лучше организовать структуру "этого"?
Zuenf
Что я надумал по файловой структуре:
api/
- index.php
- classes/
custom/
- texts/
- instances/
- settings.json
- index.php
personal-account/
- index.php
widget-server/
- index.php


Что есть что:
1. api - Основные классы. Подключаются через autoload, который задается в index.php.
2. custom - папка с текстами(texts), настройками(settings.json), а так же общими расширениями (instances). index.php подключает api и задает функцию загрузки расширений.
3. personal-account - скрипт 1
4. widget-server - скрипт 2

Как приблизительно выглядит подключение в скрипт:
require "/custom/index.php"; 

//$mail = new \API\Mail(); //Подключение основного класса напрямую
// или

$mail = \Custom\getInstance('mail'); //Подключение расширения. Вернет уже настроенный или расширенный объект класса.

$mail->sendTpl('example@mail.ru', 'test_structure');


Пример расширения:
namespace Custom;

class Mail extends \API\Mail
{
protected $texts;

public function __construct($path)
{
parent::__construct(EMAIL_FROM_NAME, EMAIL_FROM_ADDRESS);
$this->texts = new \API\Texts($path);
}

public function sendTpl($email, $tpl, $data, $type = 'mails')
{
extract($this->texts->get($type, $tpl, $data));
$this->send($email, $subject, $message);
}
}


return new Mail(\Custom\ABSPATH.'/texts/');


Еще пример
$filter = new \API\Filter();

/******************************
Handlers
*******************************/

$filter->setHandler('match', function($value, $match){
return $value === $match;
});

$filter->setHandler('str_range', function($str, $min, $max){
$length = strlen($str);
return $length >= $min && $length <= $max;
});

$filter->setHandler('email', function($email){
return filter_var($email, FILTER_VALIDATE_EMAIL);
});

$filter->setHandler('phone', function($phone){
$phone = preg_replace(array('/\+7/', '/[^\d]*/'), array('8', ''), $phone);
if(preg_match('/^8[\d]{10}$/', $phone))
return $phone;
return false;
});


/******************************
Rules
*******************************/

$filter->setRules('user_creation', array(
'email' => 'trim|email',
'password' => 'str_range(6, 30)|match({password_confirm})|md5'
));

return $filter;


Готов впитать любые замечания.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.