Tag Archive for 'php'

and和or

在elephas同学的blog那里看到lua的一条小trick, 可以替代C中的(a==1) ? “one” : “not one” , 而且貌似还更符合英语的语法.

a=1
b=(a==1) and "one" or "not one"
print(b)

试了一下, 发现在ruby和python也同样可以使用这种写法. 解释器/编译器貌似是出于优化的目的, 在处理and运算符时, 如果and左端的逻辑表达式如果为假, 解释器就可以直接得到整个and为假, 而不用执行会右边的表达式. 与之相似, 在处理or运算符的时候, 若左端的表达式为真, 解释器就直接返回真而不会执行右边的表达式.

这听起来像是无聊的语法把戏罢了, 不过在php中, 你可能会经常遇到像这样的代码:

mysql_connect($dbname,$dbuser,$dbpass) or die("dbconnect error!");

呵, 有点ruby里面的rescue语句的样子, 实际上这就是一套朴素的错误处理了. mysql_connect函数如果成功, 就会return 1; 如果出错, 就return 0; 将mysql_connect放在if里是完全可以的, 但我觉得在后面跟个or可能更好看些. 现在的php貌似已经有了一套标准的错误处理机制, 不过php的代码又何时有过标准呢? :)

update: 在编译原理里貌似有提到这东西,标准的名字是“短路表达式”

ubuntu下简单配置lighttpd和php

弄个调试环境而已, 简单整下就是了..

先安装lighttpd和php, 有apt-get, 简单无比
sudo apt-get install lighttpd
sudo apt-get install php5-cgi

接着配置.
1.为了方便在windows下修改, 就把文件夹新建在d:盘
cd /media/DISK_VOL2/
mkdir server
2.创建lighttpd配置文件lighty.conf, 可以在这里下载一份基本的配置文件, 然后自己按需修改.
打开gvim把24行左右”mod_cgi”的注释删掉, 再把server.document-root ,server.errorlog, accesslog.filename 等属性的值修改为刚才的目录,
3.server.port的默认值是80, 而80端口必须得是root权限才能打开. 如果仅仅搭调试环境的话设成3000就是了, 启动时省个sudo.
4.把fast_cgi那块的注释全都去掉, 修改如下

fastcgi.server = ( ".php" =>
                     ( "localhost" = (
                           "host" => "127.0.0.1",
                           "port" => 521
                           )
                      )
                  )

好的, 可爱的lighty.conf配置基本完毕.

打开php-cgi
php5-cgi -b 127.0.0.1:521
打开lighty:
lighttpd -D -f lighttpd.conf

嗯, phpinfo测试一下:
echo ” > test.php

打开浏览器, http://localhost:3000/test.php

如果无错误提示, 那貌似就可以用了