此文仅适合有一定基础的朋友看看.说是CMS,其实最初想做的是个小论坛,然后又变成了一个文章管理,与其说是CMS,不如说是个小新闻系统或企业站撒的,话虽这么说,我也是假装客气客气。咱先写个小的,思路有了,再想其它的...所以你现在就当我们在用Yaf写一个小企业站Yaf的优势不多说啦,我在搭建系统的时候,因为不是为了做一个小站,所以比较折腾,当然如果你只是用它写个小站,也没必要折腾Yaf了不是。至于Yaf的环境配置撒的一些基础的,可以看我之前博客,然后就是使用中不明白的还是多看看鸟哥的官方文档...
通常为了友好的URL格式,会进行站点URL的重写,可以在webserver(Nginx)的配置中进行rewrite,也可在在程序端进行以下使用Yaf框架进行URL的重写,进行一些整理,方便日后查看YAF的URL重写方式主要有以下几种,可以综合使用方式1:在配置文件中进行;a rewrite route match request /product/*/*
routes.route_name.type="rewrite"
routes.route_name.match=&...
macOS 10.12.4直接上命令,不多说了。下载并安装各软件包均通过 Homebrew,因此,安装之前,需在 Mac 上下载并安装 Homebrew,在 CLI 中通过下面的命令可以完成:ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"怎么用brew不是这篇文章介绍的。我们直接说我本地的配置过程这里安装默认的 Nginx:brew in...
server {
listen www.lvtao.net;
root /home/wwwroot/;
location / {
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
fastcgi_split_path_info ^(...
为了更好的与web区分(配置文件,argc、argv判断等等).重新创建一个入口文件是比较好的做法。$app = new YafApplication(APP_PATH . "/conf/application.ini");
$app->getDispatcher()->dispatch(new YafRequestSimple());这样入口文件就完成了。接下来,你需要学会Yaf命令行的调用方法。来一个示例:php cli.php request_uri=...
前几天装上了Yaf框架,折腾了一通,发现还不错哟!!!哈哈,于是乎准备用它折腾个小项目玩玩!!因为yaf不带有model层的操作,这儿需要自己扩展,在此记录一下application.ini[common]
application.directory = APPLICATION_PATH "/application"
application.ext = "php" ;php脚本后缀名
application.view.ext ...
Yaf的模型你可以理解为操作数据库或对数据做操作一个类~~~在控制器中,调用数据,我们先将它实例化一个模型$db=new UserModel();
echo $db->getUserInfo(11111);当我们在控制器中实例化一个不存在的模型类的时候,yaf就会在application的models下寻找这个模型类模型类文件名不需要带Model后缀,类文件如下class UserModel {
public function getUserInfo($id){
...
Yaf_Request_AbstractYaf_Request_HttpYaf_Request_SimpleYaf_Request_Abstract::getException 捕获异常Yaf_Request_Abstract::getModuleName 获取模型名称Yaf_Request_Abstract::getControllerName 获取控制器名称Yaf_Request_Abstract::getActionName 获取方法...
Yaf默认是开启了自动渲染,所以建了action后,他就会自己找模板!在测试的时候,如果不想让他寻找模板可以在action中return false 或者在bootstrap.php中关闭渲染Yaf_Dispatcher::getInstance()->autoRender(false);
或者
$dispatcher->getInstance()->disableView();默认模板文件后缀为phtml,想修改就在application.ini中配置一下就OKapp...
Yaf的路由很灵活,这儿介绍两种,它默认的那货需要写伪静态,我本地测试的时候咋个整也不成功,于是乎就有了下面这东东了...路由器主要负责解析一个请求并且决定什么module、controller、action,默认情况下,我们的路由器是Yaf_Router, 而默认使用的路由协议是Yaf_Route_Static,是基于HTTP路由的, 它期望一个请求是HTTP请求并且请求对象是使用Yaf_Request_Http通过application.ini定义路由[common]
;自定义路由
;...
位置:controllers下默认index.php我们访问的时候相当于访问的是http://www.b.com/index/index/index 对应的三个index就是模块、控制器、动作命名规则:控制器文件名不需要以Controller结尾,要继承Yaf_controller_Abstract抽象类,类名需要以Controller结尾,方法需要以Action结尾 例如:user.phpClass userController extends Yaf_controller_Abstra...
分全局类库与本地类库,它会优先加载本地类库全局类库在php.ini或ext-Yaf.ini中的yaf.library来指定本地类库为application/library中,配置见application.ini中的application.library来指定,当然是有默认值的啦我在使用的时候貌似全局类会自动加载进来,但本地类需要手工指定规则,我的做法是在bootstrap中做加载Yaf_Loader::getInstance()->registerLocalNamespace(&qu...
遵循php.ini配置方法定义配置块[lvtao]
application.directory = APPLICATION_PATH "/application"
[memcache]
memcache.host=127.0.0.1
memcache.port=12211使用这个块 这个product在全局配置中有写的哟~~~默认值[product : lvtao]但上面的示例中还有一个memcache的参数没有调用到,如下使用[product : lvtao : m...
先不说它是干嘛的~~我们先说说他能干嘛第一步:要使用它,则要修改入口文件<?php
define("APPLICATION_PATH", dirname(__FILE__));
$app = new Yaf_Application(APPLICATION_PATH . "/conf/application.ini");
//$app->run();
$app->bootstrap()->run();看出不同来了吧~~第二步...
入门第一课:配置好环境后,咋就开始码啦~第一个,目录结构index.php是入口文件,一个站点一个入口就OK了~~conf为配置文件目录,下面有个application.ini为配置文件,你也可以改别的名儿...application目录为我们的开发应用目录,下面有controllers控制器、views模板、modules模块、library类方法、models模型、plugins插件等目录application目录下还有个Bootstrap.php文件,呆会儿来说它~~~现在开始码代码...
[abc] |
匹配中括号中的单个字符,如a或b或c |
[^abc] |
匹配除了a、b、c等字符的其他单个字符 |
[a-z] |
匹配一个字符范围,如a到z |
[a-zA-Z] |
匹配一个字符范围,如a-z 或 A-Z |
^ |
匹配行的开始 |
$ |
匹配行的结束 |
\A |
匹配一个字符串的开始 |
\z |
匹配一个字符串的结束 |
. |
匹配任意单个字符 |
\s |
匹配空白字符,如空格,TAB |
\S |
匹配非空白字符 |
\d |
匹配一个数字 |
\D |
匹配非数字 |
\w |
匹配一个字母 |
\W |
匹配非字母 |
\b |
匹配字符边界 |
(...) |
引用所有括号中的内容 |
(a|b) |
a或者b |
a? |
零个或1个a |
a* |
零个或多个a |
a+ |
1个或多个a |
a{3} |
3次重复的a |
a{3,} |
3次或3次以上重复的a |
a{3,6} |
3到6次重复的a |
修正符 | |
/g |
查找所有可能的匹配 |
/i |
不区分大小写 |
/m |
多行匹配 |
/s |
单行匹配 |
/x |
忽略空白模式 |
/e |
可执行模式,PHP专有 |
/A |
强制从目标字符串开头匹配 |
/D |
使用$限制结尾字符,则不允许结尾有换行 |
/U |
只匹配最近的一个字符串;不重复匹配 |