安装完 Phalcon 后,接下来就是如何搭建自己的应用了。这里介绍下最简单的应用搭建。
一、单一模块简单应用
- 首先配置网站访问的域名,如:myapp.com,nginx 的配置可以参考 Phalcon 安装及配置文章, Apache 的参考官方配置。
-
建立web目录,结构如下:
- 入口文件说明
<?php
use Phalcon\Di\FactoryDefault as DI;
use Phalcon\Mvc\Application;
use Phalcon\Mvc\Dispatcher;
use Phalcon\Loader;
use Phalcon\Mvc\View;
$loader = new Loader();
/**
* 注册命名空间,这里使用命名空间也可以使用文件加载 $loader->registerDirs()
*/
$loader->registerNamespaces([
'App\Controllers' => '../app/controllers/',
'App\Models' => '../app/models/',
])->register();
$loader->register();
/**
* 创建DI容器
*/
$di = new DI();
/**
* 使用命名空间一定要注册派遣器,不然会找不到类。
*/
$di->set('dispatcher', function () {
$dispatcher = new Dispatcher();
$dispatcher->setDefaultNamespace('App\Controllers');
return $dispatcher;
});
//注册视图目录
$di->set('view', function () {
$view = new View();
$view->setViewsDir('../app/views/');
return $view;
});
try {
$application = new Application($di);
echo $application->handle()->getContent();
} catch (Exception $e) {
echo $e->getMessage();
}
二、多模块应用
- 域名配置和上面类似,还以 myapp.com 为例。
-
web应用目录如下:
- 入口文件说明
<?php
use Phalcon\Di\FactoryDefault as DI;
use Phalcon\Mvc\Application;
use Phalcon\Mvc\Dispatcher;
use Phalcon\Mvc\Router;
try {
/**
* 创建DI容器
*/
$di = new DI();
/**
* 注册路由
*/
$di->set('router', function () {
$router = new Router();
$router->setDefaultModule("frontend");
$router->addGet(':controller/:action', array(
'module' => 'frontend',
'controller' => 1,
'action' => 2,
));
$router->add("/admin/:controller/:action", array(
'module' => 'backend',
'controller' => 1,
'action' => 2,
));
return $router;
});
$application = new Application($di);
/**
* 注册模块
*/
$application->registerModules(array(
'frontend' => array(
'className' => 'Multiple\Frontend\Module',
'path' => '../apps/frontend/Module.php'
),
'backend' => array(
'className' => 'Multiple\Backend\Module',
'path' => '../apps/backend/Module.php'
)
));
echo $application->handle()->getContent();
} catch (Exception $e) {
echo $e->getMessage();
}
- Module 文件说明
<?php
namespace Multiple\Frontend;
use Phalcon\Loader;
use Phalcon\Mvc\Dispatcher;
use Phalcon\Mvc\View;
use Phalcon\Db\Adapter\Pdo\Mysql;
class Module
{
/**
* 注册命名空间
*/
public function registerAutoloaders()
{
$loader = new Loader();
$loader->registerNamespaces(array(
'Frontend\Controllers' => '../apps/frontend/controllers/',
'Frontend\Models' => '../apps/frontend/models/',
));
$loader->register();
}
/**
* 注册服务
*/
public function registerServices($di)
{
//注册派遣器
$di->set('dispatcher', function () {
$dispatcher = new Dispatcher();
$dispatcher->setDefaultNamespace('Frontend\Controllers\\');
return $dispatcher;
});
//注册视图
$di->set('view', function () {
$view = new View();
$view->setViewsDir('../apps/frontend/views/');
return $view;
});
//注册数据库连接服务
$di->set('db', function () {
return new Database(array(
"host" => "localhost",
"username" => "root",
"password" => "secret",
"dbname" => "invo"
));
});
}
}
想了解更多,请查看这里的 教程。