yaf-example


yafは鳥兄がC言語で作成したPHPフレームワークであり、yafドキュメントアドレス:http://yaf.laruence.com/manual/
実はずっと前からyafに触れていましたが、勉強しているだけで、深く理解して使うことはありませんでしたが、最近一つのプロジェクトを再構築しているので、再構築に使うフレームワークはyafフレームワークで、ちょうどこの機会にyafフレームワークをよく使いました.この文章は実は主にyafの例をあげて、yafを拡張して、yafのもの自体が簡単なので、速いです.鳥兄も2つの例をあげました.laruence/yaf-examples,1つはyafでSmartyを使った例で、もう1つは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": {
            "App\\Models\\": "application/models"
          }
        }
    }

    そして覚えてる
    composer install  

    Bootstrap.phpファイルの編集
    /**
     *   vendor    
     */
    public function _initLoader()
    {
        \Yaf\Loader::import(APP_PATH . '/vendor/autoload.php');
    }
    
    /**
     *   
     */
    public function _initConfig()
    {
        $this->config = \Yaf\Application::app()->getConfig();//       
        \Yaf\Registry::set('config', $this->config);
    }

    Eloquent ORM
    Eloquent ORMはLaravelフレームワークのORMです.
    yafにはデータベース操作クラスがなく、自分でDAOレイヤを書くか、サードパーティ製パッケージを直接使用するか、推奨MedooEloquent ORMがあり、chen-yafではEloquent ORMが使用されています.Bootstrap.phpファイルを編集し、_を追加initDefaultDbAdapterメソッド
    /**
     *          
     * @function _initDefaultDbAdapter
     * @author   [email protected]
     */
    public function _initDefaultDbAdapter()
    {
        //    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();
        //  Eloquent ORM
        $capsule->bootEloquent();
    
        class_alias('\Illuminate\Database\Capsule\Manager', 'DB');
    }

    次にアプリケーション/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
    twig
    twigはSymfonyフレームのテンプレートエンジンで、もちろん単独で使用することもできます.テンプレートエンジンはSmartyも使用できますが、ページキャッシュの機能を持ちたい場合はSmartyを使用します.
    Bootstrap.phpファイルを編集し、_を追加义齿
    /**
     * 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);
    }

    これでhtmlファイルでtwigテンプレートエンジンを使うことができます
    SocketLog
    SocketLogはThinkPHPフレームワークのコア開発者である「羅飛」が開発したデバッグツールであり、ThinkPHP 5フレームワークを使用したことがある人はよく知っているはずだ.もっと多くの紹介は私のもう一つの文章を読むことができます:ログサービス.
    SocketLog関連のファイルをlibrary/Common/LOggerディレクトリの下に置きました.SocketLogをインストールして構成したら、Bootstrap.phpに_を追加します.InitLoggerメソッド.
    /**
     *   
     * @param \Yaf\Dispatcher $dispatcher
     */
    public function _initLogger(\Yaf\Dispatcher $dispatcher)
    {
        //SocketLog
        if (Yaf\ENVIRON === 'develop') {
            if ($this->config->socketlog->enable) {
                //  
                \Yaf\Loader::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()
    {
        \Yaf\Loader::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/ありがとうございます!