##购物车网站 yaf+opcache for mvc+orm to api
=== 用户有购买收藏等基本操作,网站后台有商品增删查改上传图片基本操作. 前端使用AMD规范的requirejs,并且使用yeti主题的bootstrap前端响应式框架,并且支持手机浏览。
集成好了smarty和twig模板引擎,后来没有用,暂时注释
使用了ORM框架Medoo
开启yaf的Session管理
使用了memcached和php的memcached扩展,添加session
[注意]使用opcache的时候,它会缓存php为静态,debug的时候,最好关闭
demo: http://cartbyyaf.sinaapp.com/
sae不支持视图,导致不能看到购物车的内容.有时间再改吧.
##快速开始
可以按照以下步骤来部署和运行程序:
1.请确保机器localhost已经安装了Yaf扩展框架, 并且已经加载入PHP;(sae不用安装)
2.把yaf目录Copy到Webserver的DocumentRoot目录下;
3.需要在php.ini里面启用如下配置,生产的代码才能正确运行(要先安装yaf扩展):
yaf.environ="product"
4.重启Webserver;
5.访问http://yourhost/,出现商城页面!, 表示运行成功,否则请查看错误日志;
###目录结构
对于Yaf的应用, 都应该遵循类似下面的目录结构.
一个典型的目录结构
+ public
|- index.php //入口文件
|- .htaccess //重写规则
|+ css
|+ img
|+ js
+ conf
|- application.ini //配置文件
+ application
|+ controllers
|- Index.php //默认控制器
|+ views
|+ index //控制器
|- index.phtml //默认视图
|+ modules //其他模块
|+ library //本地类库
|+ models //model目录
|+ plugins //插件目录
###重写规则
除非我们使用基于query string的路由协议(Yaf_Route_Simple, Yaf_Route_Supervar), 否则我们就需要使用WebServer提供的Rewrite规则, 把所有这个应用的请求, 都定向到上面提到的入口文件.
####Apache的Rewrite (httpd.conf) .htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php
当然也可以写在httpd.conf[option]
DocumentRoot "path/public" #需要定位到本项目的public文件夹
<Directory "path/public">
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* index.php
</Directory>
####Nginx的Rewrite (nginx.conf)
root path/public #需要定位到本项目的public文件夹
location / {
try_files $uri $uri/ /index.php;
}
####Lighttpd的Rewrite (lighttpd.conf)
$HTTP["host"] =~ "(www.)?domain.com$" {
url.rewrite = (
"^/(.+)/?$" => "/index.php/$1",
)
}
####SAE的Rewrite (config.yaml)
name: your_app_name
version: 1
handle:
- rewrite: if(path ~ "^(?!public/)(.*)") goto "/public/$1"
- rewrite: if(!is_file()) goto "/public/index.php"
或者在SAE面板 appconfig->rewrite->高级设置->直接在大框框下填入下面的内容->保存
- rewrite: if(path ~ "^(?!public/)(.*)") goto "/public/$1"
- rewrite: if(!is_file()) goto "/public/index.php"
[注意] 每种Server要启用Rewrite都需要特别设置, 如果对此有疑问.. RTFM
yaf的一些资源:http://www.laruence.com/2012/07/06/2649.html
yaf学习的一些思路:http://achun.iteye.com/blog/1473126
YafUse项目给了我很大的帮助:https://www.github.com/melonwool/YafUse/
yaf的api:http://yaf.laruence.com/manual/index.html
数据库设计上面主要有课本上的一些知识
浅谈数据库设计技巧:http://www.knowsky.com/4937.html
最终结果: ![home](https://github.com/yantze/yaf/raw/master/docs/homepage-Screenshot 2014-11-16 04.24.04.png) ![backpabe](https://github.com/yantze/yaf/raw/master/docs/backpage-Screenshot 2014-11-16 04.24.42.png)