-
Notifications
You must be signed in to change notification settings - Fork 11
how to install and configure
Eachcan edited this page Oct 21, 2015
·
5 revisions
需要有三个独立目录: 框架的目录, 你自己的程序目录,你的入口文件和图片之前Web资源目录。分别如下:
| atomcode
| app # 这个名字无所谓
| public # 这个名字更无所谓,但是 Web 服务器一定要访问到
atomcode appp 放在任意目录即可。所有这个级别的目录可以随便命名。
为了使用像 http://www.example.com/user/login 这样的URL 规则,可以为 Apache 或 nginx 加一个 rewrite:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
if (!-e $request_filename){
rewrite ^/(.*)$ /index.php?_url=/$1 last;
}
然后再看一下入口文件(public/index.php)怎么写?
<?php
/*
* APP_PATH 目录就是我们项目目录,存放了 controller/model/view 等
*/
define('APP_PATH', realpath(__DIR__ . "/../app"));
/*
* ENVIRONMENT 常量指的是配置文件目录名
*
* 请参考 https://github.com/eachcan/atomcode/wiki/configure
* 系统查找配置文件时,首先会从 APP_PATH . "config/" . ENVIRONMENT . "/" 目录查找,如果这个目录下不存在指定的配置文件,则会在 APP_PATH . "/config/" 目录下查找
*
* 我们在开发环境下创建了 .dev 文件,则此处会将 ENVIRONMEMNT 设置为 development, 在需要一个配置文件时,则会优先从 APP_PATH . "/config/development/" 目录下开始查找。
*/
if (file_exists(WWW_PATH . '/../../.dev')) {
define('ENVIRONMENT', 'development');
} elseif (file_exists(WWW_PATH . '/../../.test')) {
define('ENVIRONMENT', 'testing');
} else {
define('ENVIRONMENT', 'production');
}
// 命名行模式必须有这行代码
chdir(__DIR__);
// 加载框架
include './../atomcode/core.php';
// 系统自动会加载 config.php 那个配置文件,其他的则需要在此列出
AtomCode::addConfig("database");
// 系统已注册: models 目录其他的则需要自己注册
AtomCode::registerAutoloadDir(APP_PATH . '/helpers');
// 下面这么代码即是启动项目
AtomCode::start();再看看配置文件怎么写,我现在写的,是必须要配的,自己也可以单独来点配置,供程序来使用。
以下存在 app/config/config.php 里这个文件系统会自动加载。当然如果有环境对应的子目录时,会加载目录里的同名文件:
<?php
$config['log'] = true; # 是否会记日志
$config['logdir'] = APP_PATH . '/logs'; # 要记的话记到哪儿
$config['route']['default_controller'] = "index"; # route 部分太简单不说了
$config['route']['default_action'] = "index";
$config['route']['default_module'] = ""; # module的意思是可以给控制器增加子目录,比如: data/activity/public/message/list 这个module 就是 data/activity/public, controller 是 message, action是list
$config['route']['url_param'] = "_url"; # 这个影响 rewrite 时的配置而已,按我的来吧
// 这个一般不用管,但是如果使用 url("user/list") 这种方式生成url或者 redirect 的时候,并且入口文件并不在网站根目录时有用
$config['route']['base'] = "/";
$config['view']['dir'] = APP_PATH . '/view'; # 呵呵
$config['view']['ext'] = '.phtml'; # 呵呵
// 正则匹配允许哪些域名使用本站提供的接口
$config['view']['ajax-origen'] = "";
$config['session']['mode'] = 'php'; // php | db
$config['session']['order'] = 'r'; // r | g | p | c, 表示 $_REQUEST, $_GET, $_POST, $_COOKIE
$config['session']['key'] = "sid";
$config['session']['db'] = "default"; # 使用哪组数据库配置存再写一个数据库的,因为是内置的,格式不能乱:
<?php
# 用解释吗? 当然 default 那个必须要有,你还可以起其他名,需要在模型里指定
$config['db']['default']['hostname'] = '127.0.0.1';
$config['db']['default']['username'] = 'root';
$config['db']['default']['password'] = 'eachcan';
$config['db']['default']['database'] = 'account';
$config['db']['default']['dbprefix'] = 'tbl_';
$config['db']['default']['char_set'] = 'utf8';
$config['db']['default']['port'] = '3306';好了,应该是配置完了。开始搞吧。
php index.php controller/action key=val param这里的 controller/action 位置必须在这里,会直接调用到相应位置 key val 可以在 $_GET 中获得, 当然 param 也可以在 $_GET 中获得,只是值为空字符串