Skip to content

how to install and configure

Eachcan edited this page Oct 21, 2015 · 5 revisions

目录结构

需要有三个独立目录: 框架的目录, 你自己的程序目录,你的入口文件和图片之前Web资源目录。分别如下:

| atomcode
| app	# 这个名字无所谓
| public	# 这个名字更无所谓,但是 Web 服务器一定要访问到

atomcode appp 放在任意目录即可。所有这个级别的目录可以随便命名。

Web 服务器

为了使用像 http://www.example.com/user/login 这样的URL 规则,可以为 Apache 或 nginx 加一个 rewrite:

Apache

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]

nignx

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 中获得,只是值为空字符串

Clone this wiki locally