azalea php,GitHub - hdwong/php-azalea-pure: a PHP MVC framework for node-beauty service

php-azalea-pure

php-azalea-pure (以下简称 azalea) 是基于php7语法和Node.js服务的MVC开发框架。

目录

搭建

azalea需要准备一个ini格式的配置文件,需要自己配置basepath,url,token之外,其它都有默认值

# 是否开启debug模式,默认为false

debug = on

# 时区,默认PRC

timezone = PRC

# 主题,默认null

theme = null

# 会话,默认配置

[session]

name = sid

lifttime = 0

path = null

domain = null

[path]

# 主程序路径,需自配

basepath = sys

# 控制器的文件夹,默认配置basepath路径下的子文件夹controllers

controllers = controllers

# 模型的文件夹,默认配置basepath路径下的子文件夹models

models = models

# 视图的文件夹,默认配置basepath路径下的子文件夹views

views = views

# 静态文件的文件夹,默认配置basepath路径下的子文件夹static

static = static

[service]

# 服务地址,需自配

url = http://127.0.0.1:1108/

# 服务通信token,需自配

token = abcd1234

# 服务请求超时时间,默认10

timeout = 10

# 服务连接超时时间,默认2

connecttimeout = 2

# 服务连接失败重试次数,默认1

retry = 1

# 配置静态路由,默认为空

[router]

folder/controller/action = example.html

本人程序目录结构,做修改时,请修改相应的配置

+-----php-azalea-pure

+----etc

+---config.php

+----public

+---index.php

+----sys

+---controlers

+--default.php

+---models

+---views

+---satic

+----core.php

程序入口文件index.php

define('AZALEA_ROOT', dirname(__DIR__));

require_once '../core.php';// 引入核心文件,路径要配好

// 初始化,传入正确的配置文件路径,启动

Azalea\Bootstrap::init(AZALEA_ROOT . '/etc/config.ini)->run();

访问主域名,程序默认访问Controllers文件夹下的default.php文件,DefaultController类的indexAction方法

class DefaultController extends Azalea\Controller

{

public function indexAction()

{

var_dump('Hello World!');exit;

}

}

核心文件core.php

core.php 程序的核心文件,加载配置,初始化程序数据,路由等功能实现。

Config类

Config::load($filename) 程序初始化时,加载配置文件(etc/config.php)参数,设定默认值,@param $filename 配置文件,不可读时,结束程序,抛出:Config file not found。

Config::get($key = null, $default = null) 根据$key值获取配置,没有以$key为键的配置时,返回$default值。

Config::set($key, $value) 动态设置以$key为键,以$value为值的配置。

初始化启动类

``Bootstrap::init($configFile = null)``

程序初始化,加载配置,设置报错,设置会话,设置时区,获取uri。

``Bootstrap::run()``

开启会话,路由分析,加载相应Controller方法,调用执行控制器,处理程序返回结果。

路由规则

程序有三种路由规则,优先级从低到高分别是:程序路由,静态路由,动态路由。

程序路由:程序本来的路由规则,比如访问程序url:``http://example.com/folder/example/acn/param1/param2``;

默认访问的是:sys/controllers/folder/controller.php 文件中的FolderExampleController类的acnAction方法,param1, param2是参数;

folder:sys/controllers/folder,控制器文件夹下的子文件夹,只允许一层子文件夹,可选。

example:控制器文件名,类的命名规则是,有folder情况下,就FolderExampleController, 否则, ExampleController; 控制器类必须继承超类 Azalea\Controller; 以_开始命名的方法都是不可访问的。

acn:调用的方法名,默认是以Action为后缀,可配置常量\AZALEA_ENV改变后缀。

param1、param2:传给方法的参数,如acnAction(param1,param2)。

静态路由:静态路由是在config.php配置的router。

动态路由:动态路由是在当前访问的控制器下的__router方法返回的路由,即带有以下键的数组:folder(可选), controller, action;

``Bootstrap::dispatch($route = null)``

根据路由数据执行相应的控制器方法,并返回执行结果。参数$route可选,当为假值时,默认为初始化启动类的$__route成员。

``Bootstrap::_errorDispatch(\Exception $e)``

处理由执行控制器产生的错误。

``Bootstrap::_process($result)``

处理由执行控制器返回值并输出缓冲区内容。

$result:为数组时,输出json; 等于常量E404时,抛E404Exception()错误;等于常量E500时,抛E500Exception()错误;否则,输出字符串;

Controller超类

控制器超类,所有控制器都要继承该超类。

Controller::__construct($name) 构造函数,实例化控制器类时,将当前类名$name赋值给成员变量_name,并执行当前控制器类的__init()方法。

Controller::__init() 初始化方法,子控制器类重写后,实例化时直接调用执行。

Controller::__get() php魔术方法,提供id,req,res属性的获取。$this->id:返回当前类名;$this->req:返回请求类的实例化对象;$this->res:返回响应类的实例化对象。

Controller::getService() 获取服务。

Controller::getModel($name, ...$args) 根据模型名$name获取模型实例对象,并传参。

Controller::getView() 获取视图实例对象。

Controller::getSession() 获取会话实例对象。

Model超类

模型超类,所有模型都要继承该超类。

Model::__construct($name, ...$args) 构造函数,实例化模型类时,将当前类名$name赋值给成员变量_name,并执行当前模型类的__init()方法,...$args不定参数。

Model::__init() 初始化方法,子模型类重写后,实例化时直接调用执行。

Model::getModel($name, ...$args) 根据模型名$name获取模型实例对象,并传参。

ServiceModel类

服务模型类,提供处理有关Node.js服务的一系列方法。

视图(View)类

视图类,处理程序的输出页面。

View::__construct() 构造函数,根据配置值path的相关值初始化模板的保存路径,并输出:$debug,是否开启调试模式;$tpldir,静态文件(sys/views/default/static/)路径。

View::render($tpl, $vars = null) 渲染模板目录下的$tpl指定的模板,并输出$vars数组指定的变量。

$tpl只需传模板名,默认后缀为'.phtml';

$vals 为非空关联数组,在模板中直接以数组的键为变量名引用该变量。

View::assign($key, $value = null) 定义模板的可用变量,定义一个变量时,$key为模板变量名,$value为变量值;定义多个变量时,$key为一个数组,在模板中直接以数组的键为变量名引用该变量

View::plain($text) 转义$text文本中的html特殊字符。

调用视图的例子:

控制器 sys/controllers/default.php

``

class DefaultController extends Azalea\Controller

{

public function indexAction()

{

$view = $this->getView();

// 定义模板中可用的变量

$view->assign([

'test1' => 1,

'test2' => 2,

]);

// 渲染模板,定义模板变量$test3

echo $view->render('index', ['test3' => 3]);

}

}

``

模板文件 sys/views/index.phtml

``

输出模板变量$test1:

输出模板变量$test2:

输出模板变量$test3:

输出模板变量$tpldir:

输出模板变量$debug:

``

访问结果:

``

输出模板变量$test1: 1

输出模板变量$test2: 2

输出模板变量$test3: 3

输出模板变量$tpldir: /static/

输出模板变量$debug: 1

``

请求类(Request)

``final class Request `` 请求类,提供处理请求的一系列方法。

Request::getInstance(Controller $inst) 实例对象,参数是控制器超类的实例对象。

Request::getUri() 获取经过程序处理的当前请求uri。

Request::getRequestUri() 获取没处理的当前请求uri。

Request::getBaseUri() 当前请求的文件,默认是'/'。

Request::getRoute() 获取当前的路由信息数组。

Request::isPost() 判断当前是否是post请求。

Request::isAjax() 判断当前是否是ajax请求。

Request::getQuery($field = null, $default = null) 根据$field获取当前请求的query的值,当$field为null时,返回query数组;当query数组没有键为$field的值时,返回$default的值。

Request::getPost($field = null, $default = null) 根据$field获取当前请求的post的值,当$field为null时,返回post数组;当post数组没有键为$field的值时,返回$default的值。

响应类(Response)

``final class Response `` 响应类,提供关于响应的一系列方法。

Response::getInstance(Controller $inst) 实例对象,参数是控制器超类的实例对象。

Response::gotoUrl($url, $httpCode = 302) 跳转到指定的$url,可以指定网络状态码$httpCode。

Response::gotoRoute($route) 根据指定的路由数组(folder,controller,action),调用相应的控制器方法。

Response::getBody() 获取当前缓冲区的数据。

Response::setBody($body) 清理缓冲区,并输出指定的$body。

会话类(Session)

``final class Session``

会话类,提供关于会话变量值的获取(get($key = null, $default = null)),设置(set($key, $value)),清理(clear())方法。

Exception类

异常超类,继承php内置的Exception类,提供处理程序中报错的一系列方法。

``Exception::__construct($message, $level = self::E_WARNING, $code = 0, $context = null)`` 构造方法,初始化报错信息、级别、错误码、上下文。

Exception::getLevel() 获取当前的报错级别。

Exception::getContext() 获取当前的报错上下文。

Exception::setHeader() 当前报错的http请求头(header)。

E404Exception类

http404报错,提供获取当前uri方法(getUri()),获取当前程序路由信息数组方法(getRoute()),当前报错的http404请求头(header)。

E500Exception类

http500报错。

timer函数

timer() 返回第二次调用和第一次调用之间的间隔时间。

url函数

url($path, $includeDomain = false) 根据传入的$path参数,返回处理后的url; $includeDomain参数,是否带上当前程序的主域名。

randomString函数

randomString($len, $type = null) 返回指定长度和类型的随机数。

getModel函数

getModel($name, ...$args) 根据模型名获取模型的实例对象,...$args不定参数,实例对象时的参数。

模型(model)的相关信息:

1、类名:文件名(example.php)+ 后缀(Model),即:exampleModel。

2、必须继承模型超类,即: class exampleModel extends Azalea\Model {}。

3、模型的保存路径是配置的 basepath/models/example.php,当前文档例子是:sys/models/example.php

Node.js (node-azalea)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值