Phalcon 配置


Web 应用程序的 config 文件夹包含以下文件:

  • config.php

  • loader.php

  • services.php

Config

config.php


它包含数据库连接的配置和按照目录路径进行的路由配置。

<?php 

/*
    * Modified: preppend directory path of current file,
        because of this file own different ENV under between Apache and command line.
    * Note: please remove this comment.
*/ 

defined('BASE_PATH') || define('BASE_PATH', getenv('BASE_PATH') ?: 
    realpath(dirname(__FILE__) . '/../..'));
defined('APP_PATH') || define('APP_PATH', BASE_PATH . '/app');  

return new \Phalcon\Config([ 
    'database' => [
        'adapter'     => 'Mysql',
        'host'        => 'localhost',
        'username'    => 'root',
        'password'    => '',
        'dbname'      => 'test',
        'charset'     => 'utf8',
    ],
    'application' => [
        'appDir'         => APP_PATH . '/',
        'controllersDir' => APP_PATH . '/controllers/',
        'modelsDir'      => APP_PATH . '/models/',
        'migrationsDir'  => APP_PATH . '/migrations/',
        'viewsDir'       => APP_PATH . '/views/',
        'pluginsDir'     => APP_PATH . '/plugins/',
        'libraryDir'     => APP_PATH . '/library/',
        'cacheDir'       => BASE_PATH . '/cache/',
        'baseUri'        => '/demo1/',
    ]
]);

loader.php


它继承了\Phalcon\Loader类,加载器类注册了应用需要使用的目录。

<?php  
$loader = new \Phalcon\Loader();  

/** 
    * We're a registering a set of directories taken from the configuration file
*/ 

$loader->registerDirs( [ 
        $config->application->controllersDir,
        $config->application->modelsDir
    ]
)->register();

services.php


这个文件关联了所有网络服务的功能,实现了Phalcon/Di接口,还实现了服务的依赖注入。

基本上,config文件夹中的services.php文件充当了所有服务的容器,用于初始化所有的服务,如数据库连接、设置cookies、创建一个新的会话或连接NoSQL数据库。

<?php  

use Phalcon\Mvc\View; 
use Phalcon\Mvc\View\Engine\Php as PhpEngine; 
use Phalcon\Mvc\Url as UrlResolver; 
use Phalcon\Mvc\View\Engine\Volt as VoltEngine; 
use Phalcon\Mvc\Model\Metadata\Memory as MetaDataAdapter; 
use Phalcon\Session\Adapter\Files as SessionAdapter; 
use Phalcon\Flash\Direct as Flash;   

/** 
    * Shared configuration service
*/ 

$di->setShared('config', function () { 
    return include APP_PATH . "/config/config.php";
});  

/** 
    * The URL component is used to generate all kind of urls in the application
*/ 

$di->setShared('url', function () { 
        $config = $this->getConfig();
        $url = new UrlResolver();
        $url->setBaseUri($config->application->baseUri);
    return $url;
});  

/** 
    * Setting up the view component
*/ 
   
$di->setShared('view', function () { 
    $config = $this->getConfig();
    $view = new View();
    $view->setDI($this);
    $view->setViewsDir($config->application->viewsDir);
   
    $view->registerEngines([
        '.volt' => function ($view) {
            $config = $this->getConfig();
            $volt = new VoltEngine($view, $this);
         
            $volt->setOptions([
                'compiledPath' => $config->application->cacheDir,
                'compiledSeparator' => '_'
            ]);
            return $volt;
        },
        '.phtml' => PhpEngine::class
    ]);
    return $view;
}); 

/** 
    * Database connection is created based in the parameters defined in the configuration
        file
*/ 

$di->setShared('db', function () { 
    $config = $this->getConfig();
    $class = 'Phalcon\Db\Adapter\Pdo\\' . $config->database->adapter;
    $connection = new $class([
        'host'     => $config->database->host,
        'username' => $config->database->username,
        'password' => $config->database->password,
        'dbname'   => $config->database->dbname,
        'charset'  => $config->database->charset
    ]);
    return $connection;
});