前言
在把Centos安装好了之后,我又开始捣鼓起了lamp。
毕竟在学校的组织里,是用php的yii框架作为网页后台的
于是自个也就打算顺便弄上yii。php,mysql的安装就不说太多了,这里只说一点吧:php安装时的configure:
毕竟在学校的组织里,是用php的yii框架作为网页后台的
于是自个也就打算顺便弄上yii。php,mysql的安装就不说太多了,这里只说一点吧:php安装时的configure:
./configure --prefix=/usr/local/php --with-mysql --with-apxs2 --with-libxml-dir=/usr/lib64/ --enable-mbstring --with-pdo-mysql --with-mcrypt
yii的数据库功能是需要PHP 的 PDO 扩展和相应的驱动扩展,所以想要在yii中使用mysql,编译php时需要带上--with-pdo-mysql选项,当然--with-mysql选项也是必要的,另外一点就是如果你有使用phpMyAdmin的话,必须带上--enable-mbstring跟--with-mscrypt选项
主要内容
开始使用Yii
Yii使用非常的简便,只需要将Yii的压缩包解压就可以立即使用。这里我把它解压到了/var/www/html下,当然任意目录都是可以的。解压后,我把它命名为了yii。
目录结构如下:
var
|-www
|-yii
|-demos
|-framework
|-requirements
|CHANGELOG
...
目录结构如下:
var
|-www
|-yii
|-demos
|-framework
|-requirements
|CHANGELOG
...
创建第一个应用
以下步骤都是以我的配置环境书写的
1.进入终端;
2.工作目录移至/var/www/html/yii下
3.键入/usr/local/php/bin/php framework/yiic /var/www/html/test后回车Yii会自动生成第一个应用
1.进入终端;
2.工作目录移至/var/www/html/yii下
3.键入/usr/local/php/bin/php framework/yiic /var/www/html/test后回车Yii会自动生成第一个应用
1.如果觉得/usr/local/php/bin/php这么打麻烦可以将/usr/local/php/bin加到环境变量中
2./var/ww/html/test不是唯一写法
4.开启httpd服务跟mysqld服务,在浏览器中键入127.0.0.1/test或者localhost/test或者0.0.0.0/test
(以上视apache的设定与环境的不同)
成功的话,可以看到My Web Application字样.然后是下一步
配置Yii
Yii的配置文件位于应用目录下的protected/config
main.php配置了主要的东西
这里我修改
下一步,我们使用yiic生成CRUD操作代码。
main.php配置了主要的东西
这里我修改
'db'=>array(
'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',
),
// uncomment the following to use a MySQL database
/*
'db'=>array(
// "class"=> "CDbConnection",
'connectionString' => 'mysql:host=localhost;dbname=',
'emulatePrepare' => true,
'username' => '',
'password' => '',
'charset' => 'utf8',
),*/
为了
/*'db'=>array(
'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',
),*/
// uncomment the following to use a MySQL database
'db'=>array(
// "class"=> "CDbConnection",
'connectionString' => 'mysql:host=localhost;dbname=test',
'emulatePrepare' => true,
'username' => 'root',
'password' => '123456',
'charset' => 'utf8',
),
并且使用测试实例中的/protected/data/schema.mysql.sql导入数据库中(使用的database为test)
下一步,我们使用yiic生成CRUD操作代码。
CRUD操作
这一步我弄了挺久,出现各种问题,比如Permission denied之类的,所以我先分享我自己的配置。(也不知道对不对因为是意外弄好的)
一个就是/etc/my.ini。注意我加了一句bind-address=127.0.0.1。
接下就是php.ini的配置(我的是位于/usr/local/php/lib/,要查看自己php.ini的位置,最简单的就是调用phpinfo()函数)
然后进入了Yii的shell了!
接下来键入model User tbl_user以根据tbl_user生成User模型类(与Django恰好相反)。
然后,键入crud User生成create, read, update 和 delete的控制类与视图类。
最后就可以使用127.0.0.1/test/index.php?r=user来查看结果(但愿跟随步骤的人没有出现什么错误)
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
bind-address=127.0.0.1
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
另一点,就是上面我配置Yii的时候给的host名是localhost。
接下就是php.ini的配置(我的是位于/usr/local/php/lib/,要查看自己php.ini的位置,最简单的就是调用phpinfo()函数)
[Pdo_mysql]
; If mysqlnd is used: Number of cache slots for the internal result set cache
; http://php.net/pdo_mysql.cache_size
pdo_mysql.cache_size = 2000
; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
; http://php.net/pdo_mysql.default-socket
pdo_mysql.default_socket="/var/lib/mysql/mysql.sock"
这里将pdo_mysql.default_socket指向了my.ini的socket
同样的,我也将下面的mysql.default_socket与mysqli.default_socket指向了"/var/lib/mysql/mysql.sock",同时设置了mysql.default_host为127.0.0.1
另外如果你跟我一样使用phpMyAdmin管理数据库,需要设置config.inc.php的以下设置:
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = false;
/* Select mysql if your server does not have mysqli */
$cfg['Servers'][$i]['extension'] = 'mysql';
好了,整好了各种设置,我们回到主题上来,依旧是进入终端,切换到应用目录,键入/usr/local/php/bin/php protected/yiic shell
然后进入了Yii的shell了!
接下来键入model User tbl_user以根据tbl_user生成User模型类(与Django恰好相反)。
然后,键入crud User生成create, read, update 和 delete的控制类与视图类。
最后就可以使用127.0.0.1/test/index.php?r=user来查看结果(但愿跟随步骤的人没有出现什么错误)
总结
使用框架确实是使网页开发快捷有效的一种方式,在生成代码方面Yii做的挺好,使用的也是MVC开发模式,在有过MVC开发模式的经验后,上手特别快。
但同时,Yii做了很大的限制,比如控制文件的命名方式,控制器类的命名方式,这些我觉得遵从一定的标准固然是好,只是每次都写很不爽的,不能自由命名,另一点就是,感觉它这样做也牺牲了一些效率。
顺带说一句PHP的语法感觉上还是复杂了一点array("a"=>array("b"=>1),"r"=>2)这样的东西看着真的挺难受的。。
但同时,Yii做了很大的限制,比如控制文件的命名方式,控制器类的命名方式,这些我觉得遵从一定的标准固然是好,只是每次都写很不爽的,不能自由命名,另一点就是,感觉它这样做也牺牲了一些效率。
顺带说一句PHP的语法感觉上还是复杂了一点array("a"=>array("b"=>1),"r"=>2)这样的东西看着真的挺难受的。。