基础准备
不懂php开发环境搭建的可以去网上搜索下。相信学习这个框架的童鞋们也都不是菜鸟级的了。 我习惯开发中直接用实际要发布的域名来做测试,这样将来发布后会省去一些不必要的麻烦。 假如你的程序将来要发布到域名blog.liqingbo.cn上,这里简单介绍一下方法:
1、修改本机host ,把你要测试开发的网络地址指向本地:
用文本编辑器打开:C:\Windows\System32\drivers\etc\host 文件
最后一行添加:
1 127.0.0.1 blog.liqingbo.cn
这样从你本机的浏览器请求网址www.test.com 都会被解析到你的本机ip : 127.0.0.1上。
2、打开apache的 Virtual Hosts配置文件 建立添加虚拟网站文件映射。
2
3 ServerAdmin mqqkobe@163.com
4 DocumentRoot "D:/php/test/pub"
5 ServerName blog.liqingbo.cn
6 ErrorLog "logs/dummy-host.somenet.com-error.log"
7 CustomLog "logs/dummy-host.somenet.com-access.log" common
8
9 Options FollowSymLinks
10 AllowOverride All
11 Order allow,deny
12 Allow from all
13
14
3、根据上面的配置可以看出,需要把工程test的开发目录拷贝到D:/php下
4、默认情况下把框架的参考系统源码目录也拷贝到D:/php下
开发工具
这里推荐eclipse的php开发工具(PDT),笔者是从java开始接触程序开发的所以推荐eclipse 下载地址:http://eclipse.org/pdt/downloads/ 一般下载all in one就好。
本人本地配的域名是框架网站的主域名:
15 127.0.0.1 www.yyuc.net
特别说明:
1、因为示例中配置的域名是www.yyuc.net,所以下文所提到 www.yyuc.net的地方你都需要自换成自己的域名。
2、为了让你更了解YY框架的原理和构成,我们先介绍几个简单的示例再介绍开发管理中心的使用,虽然开发管理中心会帮助我们省去一些敲代码的工作量,但是作为初学者,还是建议你一步一步的往下看。
Nginx的配置:
linux下我们更常用nginx来代替apache完成页面请求转发的工作,下面是在一个简单的nginx配置示例:
16 user www www;
17
18 worker_processes 1;
19
20 error_log /home/wwwlogs/nginx_error.log crit;
21
22 pid /usr/local/nginx/logs/nginx.pid;
23
24 #Specifies the value for maximum file descriptors that can be opened by this process.
25 worker_rlimit_nofile 51200;
26
27 events
28 {
29 use epoll;
30 worker_connections 51200;
31 }
32
33 http
34 {
35 include mime.types;
36 default_type application/octet-stream;
37
38 server_names_hash_bucket_size 128;
39 client_header_buffer_size 32k;
40 large_client_header_buffers 4 32k;
41 client_max_body_size 50m;
42
43 sendfile on;
44 tcp_nopush on;
45
46 keepalive_timeout 60;
47
48 tcp_nodelay on;
49
50 fastcgi_connect_timeout 300;
51 fastcgi_send_timeout 300;
52 fastcgi_read_timeout 300;
53 fastcgi_buffer_size 64k;
54 fastcgi_buffers 4 64k;
55 fastcgi_busy_buffers_size 128k;
56 fastcgi_temp_file_write_size 256k;
57
58 gzip on;
59 gzip_min_length 1k;
60 gzip_buffers 4 16k;
61 gzip_http_version 1.0;
62 gzip_comp_level 2;
63 gzip_types text/plain application/x-javascript text/css application/xml;
64 gzip_vary on;
65
66 #limit_zone crawler $binary_remote_addr 10m;
67
68 #log format
69 log_format access '$remote_addr - $remote_user [$time_local] "$request" '
70 '$status $body_bytes_sent "$http_referer" '
71 '"$http_user_agent" $http_x_forwarded_for';
72 server
73 {
74 listen 80;
75 server_name www.yyuc.net;
76 index index.html index.htm index.php;
77 root /home/test/pub;
78
79 location / {
80 if (!-e $request_filename) {
81 rewrite ^/(.*)$ /index.php last;
82 }
83 }
84
85 location ~ .*\.(php|php5)?$
86 {
87 try_files $uri =404;
88 fastcgi_pass unix:/tmp/php-cgi.sock;
89 fastcgi_index index.php;
90 include fcgi.conf;
91 }
92
93 location /status {
94 stub_status on;
95 access_log off;
96 }
97
98 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
99 {
100 expires 30d;
101 }
102
103 location ~ .*\.(js|css)?$
104 {
105 expires 12h;
106 }
107
108 access_log /home/wwwlogs/access.log access;
109 }
110 }
hello world
功能需求:
输入地址http://www.yyuc.net/demo/hello.html,页面显示hello wolrd字符。
通过阅读和学习通用简单路由,你会知道这个请求页面的控制器文件是:
111 controller/demo/hello.php。
在controller文件夹下建立demo目录和hello.php文件。
方式1:
编辑hello.php 代码如下:
112 <?php
113 Page::ignore_view();
114 Response::write("hello world");
115 ?>
其中page类是对页面的一个封装类,里面有一系列的静态参数和方法供控制器直接修改和调用。
page::$need_view 默认为 true,执行完这个php文件之后框架会继续加载它对应的视图文件来执行,Page::ignore_view()将其设为 false则执行完php文件后就不再寻找视图文件了。
Response::write 方法是向客户端进行文本输出,执行后立即退出脚本。
方式2:
hello.php 文件不写任何代码,可以建立空文件:controller/demo/hello.php。
建立文件:view/default/demo/hello.html
hello.html内容为:
116
hello World
由此可见,如果没有执行Page::ignore_view(),框架执行了hello.php文件之后,控制器会自动寻找视图文件hello.html文件加载执行。
方式3:
修改配置文件conf.php将$auto_find_view改为true。
117 /**是否开启无控制器时自动寻找对应视图~默认:false*/
118 public static $auto_find_view = true;
无需创建控制器文件直接建立文件:view/default/demo/hello.html
内容为:
119
hello World
配置数据库
配置数据库连接
这只是一个标准示例,实际开发中并不一定一定按照示例的方式进行。 框架的主配置文件是/yyuc/conf.php,它是一个被封装好的静类文件,有关数据库的配置如下:
120 /**数据库地址~*/
121 public static $db_host = "localhost";
122 /**数据库端口~*/
123 public static $db_port = "3306";
124 /**数据库名~*/
125 public static $db_dbname = "test";
126 /**数据库用户名~*/
127 public static $db_username = "root";
128 /**数据库密码~*/
129 public static $db_password = "";
130 /**数据库表前缀~*/
131 public static $db_tablePrefix = "qq_";