Yaf-это PHP-фреймворк, написанный на языке Си Братом Бердом. Адрес документа Yaf: http://yaf .laruence.com/manual/
На самом деле, я связался с Yaf давным-давно, но я только что узнал, не понял и не использовал его подробно. Однако в связи с недавней реконструкцией проекта, а основой, используемой при реконструкции, является структура Yaf, я воспользовался этой возможностью, чтобы эффективно использовать структуру Yaf. На самом деле, в этой статье в основном приводится пример yaf, который заключается в расширении нижнего yaf, потому что вещи YAF просты, так быстро. Брат Берд также привел два примера, laruence/yaf-примеры, пример использования Smart в yaf и пример пакета с операциями с базой данных и журналами в yaf. Мой примерный адрес Yaf: https://github.com/jsyzchen/chen-yaf.
Во-первых, вам необходимо установить yaf, который задокументирован по адресу http://php .net/manual/zh/yaf.installation.php.
extension=yaf.so Yaf.use_namespace = 1; Open namespace Yaf.use_spl_autoload=1; turn on autoload
Во-первых, вам необходимо установить yaf, который задокументирован по адресу http://php .net/manual/zh/yaf.installation.php.
Красноречивый ОРМ
Прут
Прут
Прут
Сначала отредактируйте файл conf/application.ini
[common] application.directory = APP_PATH "/application" application.view.ext = "html" application.view.engine = "twig" ;user user.default_filter = 'trim,addslashes,htmlspecialchars' [product : common] ;twig twig.cache = APP_PATH "/storage/twig/cache" ;database database.driver = 'mysql' database.read.host = '127.0.0.1' database.write.host = '127.0.0.1' database.port = '3306' database.database = 'test' database.username = 'root' database.password = '123456' database.charset = 'utf8' database.collation = 'utf8_unicode_ci' database.prefix = '' database.strict = false [develop : common] application.dispatcher.catchException = TRUE ;twig twig.debug = true ;socketlog socketlog.enable = true socketlog.host = 'localhost' socketlog.optimize = true socketlog.show_included_files = true socketlog.error_handler = true socketlog.force_client_ids = '' socketlog.allow_client_ids = 'slog_78de03' ;database database.driver = 'mysql' database.host = '127.0.0.1' database.port = '3306' database.database = 'test' database.username = 'root' database.password = '123456' database.charset = 'utf8' database.collation = 'utf8_unicode_ci' database.prefix = '' database.strict = false
База данных-это конфигурация базы данных MySQL, socketlog-это конфигурация журнала сокетов, а twig-это конфигурация механизма шаблонов twig.
Поскольку chen-yaf использует пакет composer, сначала вам необходимо установить composer, и
{
"require": {
"php": ">=5.5.9",
"illuminate/database": "5.1.*",
"illuminate/events": "5.1.*",
"symfony/debug": "2.6.*",
"symfony/var-dumper": "2.6.*",
"twig/twig": "^1.26"
},
"autoload": {
"psr-4": {
"App\Models\": "application/models"
}
}
}Тогда запомни
composer install
Тогда запомни
/**
* Loading files under vendor
*/
public function _initLoader()
{
\Yaf\Loader::import(APP_PATH . '/vendor/autoload.php');
}
/**
* configuration
*/
public function _initConfig()
{
$this - > config = Yaf Application:: app () - > getConfig (); // Save the configuration
\Yaf\Registry::set('config', $this->config);
}Тогда запомни
В yaf нет класса операций с базой данных. Вы можете написать слой DAO самостоятельно или напрямую использовать сторонние пакеты. Рекомендуется использовать Medoo и красноречивый ORM. Красноречивый ОРМ используется в чен-яфе. Отредактируйте начальную загрузку. PHP-файл и добавьте _в нем метод DBAdapter по умолчанию
/** * Initialize the database distributor * @function _initDefaultDbAdapter * @author [email protected] */ public function _initDefaultDbAdapter() { // Initialize illuminate/database $capsule = new \Illuminate\Database\Capsule\Manager; $capsule->addConnection($this->config->database->toArray()); $capsule->setEventDispatcher(new \Illuminate\Events\Dispatcher(new \Illuminate\Container\Container)); $capsule->setAsGlobal(); // Open Eloquent ORM $capsule->bootEloquent(); class_alias('\Illuminate\Database\Capsule\Manager', 'DB'); }
Затем базовый класс модели, EloquentModel.php, построен в соответствии с приложением/моделью.
Затем все классы моделей наследуют модель Eloquent, чтобы они могли управлять базой данных в Laravel, и БД также можно использовать, как фасад БД в Laravel. Документы: https://laravel-China.org/docs/5.1/красноречивый , https://laravel-China.org/docs/5.1/database
Twig-это механизм шаблонов в рамках Symfony, но его также можно использовать отдельно. Движок шаблонов также может использовать Smarty, если вы хотите иметь функцию кэширования страниц, пожалуйста, используйте Smarty.
Отредактируйте начальную загрузку. PHP-файл и добавьте метод _knitting
/**
* Twig View
* @param \Yaf\Dispatcher $dispatcher
*/
public function _initTwig(\Yaf\Dispatcher $dispatcher)
{
$twig = new \Twig\Adapter(APP_PATH . "/application/views/", $this->config->get("twig")->toArray());
$dispatcher->setView($twig);
}Это позволяет использовать механизм шаблонов twig в HTML-файлах
Журнал сокетов – это инструмент отладки, разработанный Ло Феем, основным разработчиком платформы ThinkPHP. Вы должны быть знакомы с фреймворком ThinkPHP 5. Для получения дополнительной информации вы можете прочитать другую мою статью: Служба ведения журнала.
Я поместил файлы, связанные с SocketLog, в каталог library/Common/Logger. Когда вы установили журнал сокетов и настроили его, добавьте метод _initLogger в Bootstrap.php.
/**
* log
* @param \Yaf\Dispatcher $dispatcher
*/
public function _initLogger(\Yaf\Dispatcher $dispatcher)
{
//SocketLog
if (Yaf\ENVIRON === 'develop') {
if ($this->config->socketlog->enable) {
// loading
\Yaf\Loader::import('Common/Logger/slog.function.php');
// Configure SocketLog
slog($this->config->socketlog->toArray(),'config');
}
}
}Затем вы можете отлаживать свой код в Chrome.
Чен-яф вводит некоторые функции, которые обычно используются в library/Common/functions.php, если у вас есть другие функции в вашем проекте. Отредактируйте Начальную загрузку. PHP и добавьте метод функции _init.
/**
* Common function loading
*/
public function _initFunction()
{
\Yaf\Loader::import('Common/functions.php');
}Чен-яф-это всего лишь очень простой пример яф, с добавлением красноречивых ОРМ и прутика. В реальном проекте нам нужно постоянно что-то добавлять в него. Теперь, когда мы используем пакет composer, мы можем легко использовать сторонние пакеты при выполнении наших собственных проектов, чтобы избежать повторения колес. Порекомендуйте некоторые сторонние пакеты, которые мы используем в проектах рефакторинга. Углерод: Действие времени и даты. 2. php-resque: Работа в очереди. 3. Работа sokil/php-mongo:mongodb. 4. монолог: Ведение журнала.
Для лучшего общения добавьте группу QQ: 415183844
Кодовые слова нелегко воспроизвести, пожалуйста, укажите исходный адрес, блог Jsyz Chen: http://jsyzchen.com/2016/10/22/yaf-example/thank ты!