A lightweight PHP framework written in Zephir and build as C-extension.
Phalcon is powerfull and flexible,But theVolt
is a stereotypedView Engine
.Some times,when you want to call customer functions in view is soooooooo difficult.And theValidation
component is difficult to use too.
Yaf is not rich enough.There is NOORM
features and also NO database layer,And the View Engine is too simple.
Now, In the dll directory,There are only dll extensions for php 7.0.
The framework is being written, please wait for the release...
- PHP = 7.0
- openssl extension
- PDO extension
Documention
Recommended directory structure is as follows:
+ public //Application WEB ROOT | - index.php // Application Entrance | + static contents+ config | - config.php // + controller | - IndexController.php // Controller+ model | - User.php // Model+ view | - index | - index.html //View file+ runtime //runtime cache etc.+ vendor //composer dir ... Other
Bind the dirpublic
.
index.php
Code sample:
<?phpuseAimo\Application;useAimo\Config;define('APP_PATH',rtrim(realpath(__DIR__."/../"),"\\/")."/");require(APP_PATH .'config/config.php');Application::init(Config::get('application'))->run();
Implement your Rewrite rules for you web server as most other framework do,Aimo support two kind of url mode like below:
index.php/module/controller/action/param/value/param1/value1.html
Or
index.php?_url_=/module/controller/action/param/value/param1/value1.html
All configuration items inconfig.php
.
<?phpuseAimo\Config;Config::init(['application' => ['timezone' =>'Asia/Shanghai',//时区设置'app_path' =>APP_PATH,//应用根目录'namespace' =>'app',//应用命名空间前缀'multiple_module' =>false,//多模块支持'url_suffix' =>'.html'//URL地址后缀 'debug' => true,//开启调试模式'error_log' =>APP_PATH.'runtime/log/php_error.log',//指定脚本错误日志文件 ],'namespaces' => ['app' =>APP_PATH,//命名空间注册 ],//数据库连接配置'db' => ['dsn' =>'mysql:host=localhost;dbname=database','username' =>'username','password' =>'password','prefix' =>'pre_','identifier_case' =>'lower',//表名字段大小写状态 default,lower,upper'options' => [ \PDO::MYSQL_ATTR_INIT_COMMAND =>'SET NAMES utf8' ] ],//默认缓存配置'cache' => ['cache_path'=>APP_PATH.'runtime/cache/data/', ],//视图配置'view' => ['view_path' =>APP_PATH.'view/','view_cache_path' =>APP_PATH.'runtime/cache/tpl/','view_file_ext' =>'html' ],//事件响应配置(钩子)'events' => ['app_init' =>"app\\event\\Handler::onAppInit",'before_dispatch' =>'','after_dispatch' =>'','before_notfound' =>'','controller_init' =>'','view_init' =>'','before_render' =>'','after_render' =>'', ]]);
Default controllerIndexController
:
<?phpnamespaceapp\controller;useAimo\Controller;useAimo\View;class IndexControllerextends Controller {publicfunctionindexAction() { View::assign('list',['a','b','c']); View::assign('number',6); View::render('index/index',['data' =>'hello world']);//Or you can render like bellow line;$this->assign('name','eric');$this->render('index/index',['list' => ['a','b','c'],'number' =>6,'data' =>'hello world' ]); }}
Sample code:
<!doctype html><htmllang="en"><head><metacharset="UTF-8"><title>Aimo Hello World</title></head><body>{$data}<ul> {loop $list $v}<li>{$n}:{$v}</li> {/loop}</ul>{var_dump($number)}{$number++}</body></html>