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;
Готов впитать любые замечания.