,不理解这个是错误吗?

#1 webjin

我是一个PHP初学者,根据朋友介绍 speedphp适合初学者学习的一个开发框架东西,
我今天下出来看看,不错,但是我不理解的是官方的一些文件代码结束居然没有 ?> 这是php代码结束标记,根据史书记载他是需要加上去的啊 ,但是我加上去也可以正常运行不加也可以正常运行,原来这就是speedphp的魅力啊。

2010-03-03 18:27:26

#2 jake

这不是错误,而是推荐的写法。
PHP文件结尾不用?>的好处是不会产生多余的字符。
别小看这些多余的字符,它们会在FTP上传或者编码过程中有时会被带上。而且会导致HEADER不能输出,文件编码错误等等的问题。
当然这是发生几率很小的问题,但是这样的一个编程惯例,我们也希望大家能够习惯。

PS:结尾?>加或者不加,还有个判断:如果该PHP文件内嵌了非常多的HTML,类似模板的那种最好要加。如果文件是纯PHP代码,那么最好不要加?>,而SP框架的文件,大部分都是纯的PHP代码。

还有像 if( 1 == $a )这种写法,在很多“正统”的书籍中并没有介绍,但是这些都是良好的PHP编程习惯,如果初学者能够一开始就习惯这种写法,那么以后编程起来就不会被它们引起的莫名其妙的错误给阻碍了。

2010-03-04 09:07:40

#3 webjin

哦 知道了,第一次听过,纯PHP代码就不需要加 ?> 吗
但是很多书说要加才是标准的啊
会导致HEADER不能输出,文件编码错误等等的问题。
header不输出,文件编码错误?是在ftp里面?那用二进制模式上传

2010-03-04 21:04:28

#4 webjin

参考了很多 大型的php开发的项目,很多都加了,jake 再给我说一下不需加的理由吧。初学阶段比较迷茫

2010-03-04 21:06:40

#5 webjin

Q:为什么有“”结束呢?
A:?>在脚本最后不是必要的。PHP总是以文件结束作为?>PHP脚本结束。相反,如果在?>后存在有空格,回车等字符。输出时会当作HTML输出,导致header, setcookie, session_start等函数执行错误。所以很多编码规范推荐在PHP脚本的文件最后不写?>。  这是我再网上找的,真的是这样吗?另外论坛访问很慢,发帖回帖 加载验证码很慢。

2010-03-04 21:11:16

#6 jake

Q:为什么有“”结束呢?
A:?>在脚本最后不是必要的。PHP总是以文件结束作为?>HP脚本结束。相反,如果在? ...
webjin 发表于 2010-3-4 21:11
正是如此。

PS:网站空间在国外,所以速度时快时慢,:handshake 抱歉抱歉。

2010-03-05 08:48:17