摘要:鳥哥也給了兩個例子,一個是在里使用的例子,還有一個是在里加了和操作的包的例子。編輯文件,添加方法這樣就可以在文件里使用模板引擎了是框架核心開發者羅飛開發的一個調試的工具,使用過框架的應該很熟悉。
yaf是鳥哥用C語言編寫的一個PHP框架,yaf文檔地址:http://yaf.laruence.com/manual/
其實很早之前就接觸yaf了,但只是學習學習,沒有深入的去了解和使用,但由于最近在重構一個項目,而重構所用到的框架就是yaf框架,正好趁此機會好好地使用了下yaf框架。本篇文章其實主要給一個yaf的例子,就是擴展了下yaf,因為yaf的東西本身就簡單,所以快。鳥哥也給了兩個例子,laruence/yaf-examples,一個是在yaf里使用Smarty的例子,還有一個是在yaf里加了DB和Log操作的包的例子。我給的yaf例子地址是:https://github.com/jsyzchen/chen-yaf
配置首先,你得安裝yaf,文檔里有,http://php.net/manual/zh/yaf.installation.php 。
安裝完之后,編輯php.ini文件,配置yaf:
extension=yaf.so yaf.use_namespace=1 ;開啟命名空間 yaf.use_spl_autoload=1 ;開啟自動加載
chen-yaf主要添加了:
Eloquent ORM
Twig
羅飛的SocketLog
一些常用函數
先編輯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
database為MySql數據庫的配置,socketlog為socketlog的配置,twig為twig模板引擎的配置
因為chen-yaf使用的是composer包,首先你得安裝composer,然后在項目目錄下建一個composer.json文件,內容如下:
{ "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": { "AppModels": "application/models" } } }
然后記得
composer install
編輯Bootstrap.php文件
/** * 加載vendor下的文件 */ public function _initLoader() { YafLoader::import(APP_PATH . "/vendor/autoload.php"); } /** * 配置 */ public function _initConfig() { $this->config = YafApplication::app()->getConfig();//把配置保存起來 YafRegistry::set("config", $this->config); }Eloquent ORM
Eloquent ORM是Laravel框架里的ORM。
yaf里是沒有數據庫操作類的,可以自己寫一個DAO層,或者直接使用第三方包,推薦Medoo和Eloquent ORM,chen-yaf里面是使用的Eloquent ORM。
編輯Bootstrap.php文件,添加_initDefaultDbAdapter方法
/** * 初始化數據庫分發器 * @function _initDefaultDbAdapter * @author jsyzchenchen@gmail.com */ public function _initDefaultDbAdapter() { //初始化 illuminate/database $capsule = new IlluminateDatabaseCapsuleManager; $capsule->addConnection($this->config->database->toArray()); $capsule->setEventDispatcher(new IlluminateEventsDispatcher(new IlluminateContainerContainer)); $capsule->setAsGlobal(); //開啟Eloquent ORM $capsule->bootEloquent(); class_alias("IlluminateDatabaseCapsuleManager", "DB"); }
然后在application/model下建一個Model基類,EloquentModel.php
然后所有的Model類都繼承EloquentModel,這樣就可以像在Laravel里操作數據庫了,另外DB也是能使用的,和Laravel里的DB facade使用方法一樣。文檔:https://laravel-china.org/docs/5.1/eloquent , https://laravel-china.org/docs/5.1/database
twigtwig是Symfony框架里的模板引擎,當然它也可以多帶帶使用。模板引擎也可以使用Smarty,如果你想擁有頁面緩存的功能,請用Smarty。
編輯Bootstrap.php文件,添加_initTwig方法
/** * Twig View * @param YafDispatcher $dispatcher */ public function _initTwig(YafDispatcher $dispatcher) { $twig = new TwigAdapter(APP_PATH . "/application/views/", $this->config->get("twig")->toArray()); $dispatcher->setView($twig); }這樣就可以在html文件里使用twig模板引擎了
SocketLogSocketLog是ThinkPHP框架核心開發者“羅飛”開發的一個調試的工具,使用過ThinkPHP5框架的應該很熟悉。更多的介紹可以閱讀我的另一篇文章:日志服務。
我把SocketLog相關的文件放在library/Common/Logger目錄下了,當你安裝完SocketLog并配置好,在Bootstrap.php添加_initLogger方法。
/** * 日志 * @param YafDispatcher $dispatcher */ public function _initLogger(YafDispatcher $dispatcher) { //SocketLog if (YafENVIRON === "develop") { if ($this->config->socketlog->enable) { //載入 YafLoader::import("Common/Logger/slog.function.php"); //配置SocketLog slog($this->config->socketlog->toArray(),"config"); } } }然后就可以在Chrome里調試你的代碼了。
其他chen-yaf引入了一些函數,放在library/Common/functions.php里了,都是一些常用的函數,如果你的項目中有其他的函數往里面加就行了。編輯Bootstrap.php,添加_initFunction方法。
/** * 公用函數載入 */ public function _initFunction() { YafLoader::import("Common/functions.php"); }總結chen-yaf只是一個很簡單的yaf例子,加了Eloquent ORM和twig。實際項目中,還需要不斷地往里面添加東西。既然我們使用了composer包,那么我們在做自己的項目時就可以很方便的使用第三方包,避免我們重復造輪子。
推薦一些第三方包吧,也是我們在重構項目里所用到的。
1.carbon:對于時間日期的操作。
2.php-resque:隊列的操作。
3.sokil/php-mongo:mongodb的操作。
4.monolog:日志的操作。為了更好的交流,可以加QQ群:415183844
碼字不容易,轉載請注明原地址,Jsyz Chen的博客:http://jsyzchen.com/2016/10/22/yaf-example/ 謝謝!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22072.html
閱讀 1264·2021-09-23 11:51
閱讀 1370·2021-09-04 16:45
閱讀 626·2019-08-30 15:54
閱讀 2076·2019-08-30 15:52
閱讀 1594·2019-08-30 11:17
閱讀 3098·2019-08-29 13:59
閱讀 2010·2019-08-28 18:09
閱讀 381·2019-08-26 12:15