• [Phalcon-framework]2016-04-13_安装使用 Phalcon 框架


    1. 获取你的 PHP Version,操作系统是 x86 还是 64bit的,以及 Compiler 是什么 VC, 你可以直接同时 phpinfo() 函数获取到,如下截图:

    2.  下载对应的 Phalcon package,需要注意的就是红框中的东西, 链接: https://phalconphp.com/en/download/windows

    3. 请参考安装教程,链接: https://docs.phalconphp.com/en/latest/reference/wamp.html

        主要是需要在两个 php.ini 文件中添加: extension=php_phalcon.dll;

       一个是 php 自己的 php.ini ,另一个是 apache 目录 bin 下的 php.ini;

    参考文章链接:

    1. 如何在 wamp 中安装使用 Phalcon, https://docs.phalconphp.com/en/latest/reference/wamp.html

    2. 简单介绍 Phalcon Framework, http://www.sitepoint.com/phalconphp-yet-another-php-framework/

    Phalcon

    1. a full-stack framework

    2. it promotes the MVC architecture and offers features like an ORM, a Request object library, a ttemplating engine, caching,pagination...

    3. Phalcon is somewhat unique because you don't just download an archive and extract it to a directory like you do with most other frameworks. Instead, you download and install Phalcon as a PHP module. Installation instructions here - https://docs.phalconphp.com/en/latest/reference/install.html

    4. One major brawback for PHP is that on every request, all files are read from the hard drive, translated into bytecode, and then executed. This cause some major performance loss when compared to other languages like Ruby(Rails) or Python(Django, Flask)

    5. Phalcon over 2300+ requests per second, less than 1 second time per request

    6. Phalcon offers the classic features of a modern PHP MVC-framework(routing, controllers, view template, ORM, Caching, etc.), so there is nothing special whem compared to other frameworks except for its speed. Still, let's tak a look at what a typical project using Phalcon looks like.
    First, there's usually a bootstrap file which will be called on every request. The requests are sent to the bootstrap via directives stored in an .htaccess file.

    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUESR_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
    </IfModule>


    7. The Phalcon documentation suggests using the following directory structure:
        
        app/
            controllers/
            models/
            views/
            
        pulic/
            css/
            img/
            js/
            
        But the directory layout can be modified if you really want since everything will be accessed via the bootstrap file which exists as public/index.php.
        
        <?php
            
            try {
                // register an autoloader
                $loader =  new PhalconLoader();
                $loader->registerDirs(array(
                    '../app/controllers/',
                    '../app/models/'
                ))->register();
                
                // create a dependency injection container
                $di = new PhalconDIFactoryDefault();
                
                // set up the view component
                $di->set('view', function() {
                    $view = new PhalconMvcView();
                    $view->setViewDir('../app/views/');
                    return $view;
                });
                
                // handler the request
                $application = new PhalconMvcApplication();
                $application->setDI($di);
                echo $application->handle()->getContent();
            }
            catch (PhalconException $e) {
                echo "PhalconException:", $e->getMessage();
            }
            
        Model-Controller
        
        The controllers and models are autoloaded, so you can create files and use them from any where in the project. Controllers should be extend PhalconMvcController and models extend PhalconMvcModel.
        
        Controller actions are defined like so:
            
            public function indexAction() {
                echo "welcome to idnex";
            }
           
        Models too are pretty straight-forward:
            
            class Users extends PhalconMvcModel
            {
            }
        By extending the PhalconMvcModel class you immediately have access to some handy methods, like find(), save(), and validate(). And you can use relationships like:
        
            class Users extends PhalconMvcModel
            {
                public function initialize() {
                    $this->hasMany('id', 'comments', 'comments_id');
                }
            }
        
        Views
        
        views offer basic functionality like being abot to pass data to your views and working with layouts. Phalcon views doesn't use special syntax though like Twig or Blade, though. They use pure PHP.
            
            <html>
                <head>
                    <title>Blog's title</title>
                </head>
                <body>
                <?php echo $this->getContent();?>
                </body>
            </html>
        Phalcon does however has a flash messaging system built-in:
            $this->flashSession->success('Successfully logged in!');
            
        Phalcon Query Language
        
        Phalcon has its own ORM, Phalcon Query Language(PHQL), which can be used to make database interaction more expressive and clean. PHQL can be intergrated with models to easily define and use relationships between your tables.
        
        You can use PHQL by extending the PhalconMvcModelQuery class and then create a new query like:
         
            $query = new PhalconMvcModelQuery("SELECT * FROM users", $di);
            $users = $query->execute();
         
        And instead of such raw SQL, you can use the query builder like this:
            
            $users = $this->modelsManager->createBuilder()->from("users")->orderBy("username")->getQuery()->execute();

  • 相关阅读:
    .NET简谈设计模式之(适配器模式)
    .NET简谈组件程序设计之(手动同步)
    .NET简谈组件程序设计之(初识远程调用)
    .NET简谈组件程序设计之(初识.NET线程Thread)
    .NET映射设计(Model与UIControl之间的模型关系)
    .NET简谈事务本质论
    .NET简谈组件程序设计之(异步委托)
    向5.4致敬吧 无为而为
    SQL 2005 分析服务基于角色的动态授权 无为而为
    文思创新深圳招聘biztalk 无为而为
  • 原文地址:https://www.cnblogs.com/shuman/p/5387671.html
Copyright © 2020-2023  润新知