‘壹’ 高质量php代码的50个技巧(3)
42
43
44
45
/**
Method to execute a command in the terminal
Uses :
1. system
2. passthru
3. exec
4. shell_exec
*/
function terminal($command)
{
//system
if(function_exists('system'))
{
ob_start();
system($command , $return_var);
$output = ob_get_contents();
ob_end_clean();
}
//passthru
else if(function_exists('passthru'))
{
ob_start();
passthru($command , $return_var);
$output = ob_get_contents();
ob_end_clean();
}
//exec
else if(function_exists('exec'))
{
exec($command , $output , $return_var);
$output = implode(" " , $output);
}
//shell_exec
else if(function_exists('shell_exec'))
{
$output = shell_exec($command) ;
}
else
{
$output = 'Command execution not possible on this system';
$return_var = 1;
}
return array('output' => $output , 'status' => $return_var);
}
terminal('ls');
上面的函数将运行shell命令, 只要有一个系统函数可用, 这保持了代码的一致性.
5. 灵活编写函数
?
1
2
3
4
5
6
function add_to_cart($item_id , $qty)
{
$_SESSION['cart']['item_id'] = $qty;
}
add_to_cart( 'IPHONE3' , 2 );
使用上面的函数添加单个项目. 而当添加项列表的时候,你要创建另一个函数吗? 不用, 只要稍加留意不同类型的参数, 就会更灵活. 如:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function add_to_cart($item_id , $qty)
{
if(!is_array($item_id))
{
$_SESSION['cart']['item_id'] = $qty;
}
else
{
foreach($item_id as $i_id => $qty)
{
$_SESSION['cart']['i_id'] = $qty;
}
}
}
add_to_cart( 'IPHONE3' , 2 );
add_to_cart( array('IPHONE3' => 2 , 'IPAD' => 5) );
现在, 同个函数可以处理不同类型的输入参数了. 可以参照上面的例子重构你的多处代码, 使其更智能.
6. 有意忽略php关闭标签
我很想知道为什么这么多关于php建议的博客文章都没提到这点.
?
1
2
3
<?php
echo "Hello";
//Now dont close this tag
这将节约你很多时间. 我们举个例子:
一个 super_class.php 文件
?
1
2
3
4
5
6
7
8
9
<?php
class super_class
{
function super_function()
{
//super code
}
}
?>
//super extra character after the closing tag
index.php
?
1
2
require_once('super_class.php');
//echo an image or pdf , or set the cookies or session data
这样, 你将会得到一个 Headers already send error. 为什么? 因为 “super extra character” 已经被输出了. 现在你得开始调试啦. 这会花费大量时间寻找 super extra 的位置。因此, 养成省略关闭符的习惯:
?
1
2
3
4
5
6
7
8
9
<?php
class super_class
{
function super_function()
{
//super code
}
}
//No closing tag
这会更好.
7. 在某地方收集所有输入, 一次输出给浏览器
这称为输出缓冲, 假如说你已在不同的函数输出内容:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function print_header()
{
echo "<p id='header'>Site Log and Login links</p>";
}
function print_footer()
{
echo "<p id='footer'>Site was made by me</p>";
}
print_header();
for($i = 0 ; $i < 100; $i++)
{
echo "I is : $i ';
}
print_footer();
替代方案, 在某地方集中收集输出. 你可以存储在函数的局部变量中, 也可以使用ob_start和ob_end_clean. 如下:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function print_header()
{
$o = "<p id='header'>Site Log and Login links</p>";
return $o;
}
function print_footer()
{
$o = "<p id='footer'>Site was made by me</p>";
return $o;
}
echo print_header();
for($i = 0 ; $i < 100; $i++)
{
echo "I is : $i ';
}
echo print_footer();
为什么需要输出缓冲:
>>可以在发送给浏览器前更改输出. 如 str_replaces 函数或可能是 preg_replaces 或添加些监控/调试的html内容.
>>输出给浏览器的同时又做php的处理很糟糕. 你应该看到过有些站点的侧边栏或中间出现错误信息. 知道为什么会发生吗? 因为处理和输出混合了.
8. 发送正确的mime类型头信息, 如果输出非html内容的话.
输出一些xml.
?
1
2
3
4
5
6
$xml = '<?xml version="1.0" encoding="utf-8" standalone="yes"?>';
$xml = "<response>
<code>0</code>
</response>";
//Send xml data
echo $xml;
工作得不错. 但需要一些改进.
?
1
2
3
4
5
6
7
$xml = '<?xml version="1.0" encoding="utf-8" standalone="yes"?>';
$xml = "<response>
<code>0</code>
‘贰’ 如何学习PHP程序开发呢
PHP作为全球最流行的编程语言之一,普遍用于重点项目中。Facebook以PHP来建立和维护内部系统。昆明电脑培训http://www.kmbdqn.cn/建议PHP已为大部分网站提供支持。为什么要选择PHP框架?如何学习PHP程序开发呢?
使用PHP框架开发的优点:
1。PHP框架令开发更迅速。不用繁琐的操作检索数据,PHP提供了Create、Retrieve、Update和Delete的操作。
2。框架可以更轻松地扩充系统。
3。代码维护比一般PHP应用更方便。应用程序代码将更简单。
4。MVC模式能确保迅速发展。
5。框架更好地保护Web应用程序不受多见的安全胁迫。
6。DRY——Don’tRepeatYourself原则让极少的代码发挥极大的作用。
即使运用原生的PHP可以写出任意应用,如今开发大多需要运用工具和时间管理技能,以满足市场需求。以下是最热门的三款PHP框架。
Symfony
Symfony即能反复使用的PHP程序开发组件,能开发可扩展的高性能应用。提供30个组件,可以在RAD环境下随心所欲开展工作。Laravel是建立自Symfony。
Laravel
“PHPframeworkforWebArtisans”——Laravel是最盛行的PHP框架,提供出色的社区交流平台。
‘叁’ 如何学好PHP知识
如何学好PHP知识
PHP 独特的语法混合了C、java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。那么如何学好PHP知识?以下仅供参考!
具体方法如下:
一,学习Php,首先得熟悉一样相关html技术并掌握基本的css样式,这样就能了解页面的构成为学习Php打下基础,W3C学校里有丰富的编程教程,还支持边写边练。
二,学习完html基础后,接下来就是开始正式接触php了,但这之前还有一部,那就是配置Php开发环境Php开发环境的配置有很多种方法,不过对于初学者来说大都是采用集成环境wamp啊,phpnow,xampp,apmser直接下载,安装,再进行一下相关的配置即可环境配置好了,可以边写代码变了解PHP的基本语法运算符啊,逻辑控制啊,数组的操作,字符的操作数据库连接,以及Mysql查询。
三,Php基础需要再不断的练习中稳固,面向对象编程,对于程序来说是非常重要的了解面向对象编程的意义,类的创建、类的多态、类的集成、类的封装熟悉MVC架构,(模型model,视图view,控制器controller)对于开发网站来说是很有必要性的,这确保网站文件放置位置的规范,后期维护网站,找起来也是比较方便。
四,xml和mysql的学习也是必须的Mysql的增删改查(CURD)操作必须熟烂于心熟悉mysql不同数据库引擎的差别,以便于根据自身网站需求来建。
五,熟悉cookie和session机制,有利于你更好的把握php会话的`处理。
六,lamp是指在linux环境下搭建的Php开发环境(较wamp环境下,处理快),故而熟悉Linux也是非常很重要的。熟悉smarty能够帮你快速熟悉使用smarty开发的框架。。
七,php的知识掌握的差不多,接下来可以接触一些框架CI框架,YII框架,JOOMLA框架ECSHOP框架,ECMALL框架,THINKPHP框架框架能够帮助你快速的建站。
八,最后,告诉大家如何快速提升自己的php技术。一、在技术性论坛注册一个账号,参与讨论,查看别人发的代码二、加入技术群,关注里面的讨论,多看看别人的程序设计思路,用的方法三、多实际操作,不懂就得问。
;‘肆’ php工程师要学会什么技能
php工程师需要哪些技术?一起来了解一下吧。
php工程师需要学习web前端技术并使用php语言进行程序开发,还需要熟练使用Linux操作系统、mysql数据库以及各种php开发框架,同时也要掌握缓存技术、数据库优化技术、系统调优技术和负载均衡技术等。
拓展:php与其他编程语言相比有什么优点呢?
1、入门快:有其它语言基础,比如C语言,二周左右的时间你就可以入门,一个月左右,你基本上就可以开发简单的项目了;没有其他语言基础也不要慌,只要学好php基础知识,也是很容易上手的。
2、开发成本低:PHP最经典的组合就是:Linux+Apache+MySQL+PHP,上手容易,开发的速度比较快,非常适合开发中小型的web应用,而且所有的软件都是开源免费的,可以省不少的钱。
3、执行快:PHP是解释性的脚本语言,写完代码以后即可以执行,不像c,java,c++等语言还需要去编译执行。
4、配置部署简单:PHP开发中主要是PHP自身的配置文件及Web服务器的配置(如Apache或Nginx或Lighttpd等),相对简单。
5、资源多:有很多开源的框架或开源的系统可以使用,比如比较知名的开源框架有ZendFramework、CakePHP、CodeIgniter、symfony、thinkphp等。
今天的分享就是这些啦,希望能对大家有帮助哟!
‘伍’ 如何快速学会PHP
php的概述
了解什么是php,php语言有什么优势,php语言有哪些特性,php的发展趋势,php应用的领域等等问题。
‘陆’ 怎么提高php编程能力
要想提高你的PHP编程能力,你可以做两件事情:1)更扎实的掌握基本编程技能;2)更细微、更深入地了解PHP。
以下总结出的几条指南导航将有助于提高开发者的PHP编程能力:
一、提高PHP编码能力的10个细节
或许你并不能从这些细节中学到绝对新的东西(例如“如何对变量和函数做好的命名”,“对代码做好注释”,“频繁测试代码”),而它们可以让你巩固基础知识。以下几点解释了为什么最好的普通编程实践在PHP应用软件开发中尤为重要。
其中10点建议分别为:
1)如何开始良好的开发风格;
2)合适的变量及函数命名;
3)注释代码;
4)自己动手做大部分的工作;
5)多方涉猎;
6)了解开发语言的局限性;
7)接受结构上的意见反馈;
8)频繁的测试代码;
9)在自己的工程上内嵌程序;
10)不要把每一个文件都分一个文件夹
二、写出更优PHP代码的7条法则
以下7种方法列举出了PHP开发商极有可能面对的问题(例如不使用模板,不合适的封装,在增删修改时PHP和SQL的混淆使用等等),对于那些很有可能危害到PHP应用程序运行的各种复杂语句,该指南也提供了多种方法来清除(例如对大容量的网页减少数据库查询)。
以下是关键点:
1)在模板中使用可选择的PHP语法;
2)封装所有的东西;
3)使用一个数据库对象;
4)使用增删查改功能;
5)与调试为友;
6)重视命名;
7)减少数据库查询。
‘柒’ 提高PHP开发效率的技巧
用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号)。
1、如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍。
2、$row[’id’] 的速度是$row[id]的7倍。
3、echo 比 print 快,并且使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接,比如echo $str1,$str2。
4、在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替。
5、注销那些不用的变量尤其是大数组,以便释放内存。
6、尽量避免使用__get,__set,__autoload。
7、require_once()代价昂贵。
8、include文件时尽量使用绝对路径,因为它避免了PHP去include_path里查找文件的速度,解析操作系统路径所需的时间会更少。
9、如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用$_SERVER[‘REQUEST_TIME’]要好于time()。
10、函数代替正则表达式完成相同功能。
11、str_replace函数比preg_replace函数快,但strtr函数的效率是str_replace函数的四倍。
‘捌’ 如何学习好php编程技术
(1)熟悉HTML/CSS/JS等网页基本元素,完成阶段可自行制作完整的网页,对元素属性达到熟悉程度
(2)理解动态语言的概念,运做机制,熟悉PHP语法
(3)学习如何将PHP与HTML结合起来完成简单动态页面
(4)接触MYSQL,开始设计数据库程序
(5)不断巩固,摸透大部分PHP常用函数,并可理解OOP,MYSQL优化,以及模板 (6)完成一个功能齐全的动态站点
这套线路可能跟许多学习PHP的爱好者不谋而合,这也算是一个循序渐进的学习过程,不过新手不要看到上面的概括就以为学习蛮简单的,任何东西其实都不简单,即使是小吃部的烧饼也不是一下子就会做成的。 我先解释一下我的学习思路。
首先,理解网站这一概念之后不难看出,任何网站都是由网页组成的,也就是说想完成网站,必须先学会做网页,因此必须要掌握了HTML,才能为今后制作网站打下基础。
在学习HTML中我想边学边做是最有效的方式,当然这一方式对于学习PHP同样是最有效的。
HTML中的任何元素都要亲自实践,只有明白了什么元素会起到什么效果之后,你才会记忆深刻,而一味的啃书,绝对是不行的。 掌握静态网页的制作技术是学习开发网站的先决条件。
我假设你目前已经可以完成一个静态页面了。那么咱们就开始学习动态语言的概念吧,刚一接触动态语言,可能很多人都会蒙了,怎么这乱七八糟的东西,在网页里显示的时候却是另外一码事?其实这并不算乱七八糟,你写的HTML代码不也一样是一堆堆的字符吗?毕竟,代码并不是作为直接输出的,而是经过处理的,说白了,HTML是经过HTML解析器,而 PHP当然也就通过PHP解析器了,跟学习HTML一样的道理,想让任何的解析器完成操作,就必须使用它们专用的语法结构,所以PHP长相奇怪也就不足为奇了。
对于PHP的理解是新手最难迈过的一道门槛,不过你应该感到幸运的是PHP已经最大极限的为了新手而努力了,如果你学过其他的语言,也许会觉得PHP的确相当的简单,即使你理解不了PHP,但是也必须先跟它混个脸熟。 搞清楚HTML和PHP的概念,那么PHP和HTML混合编程应该不成问题,在这期间,你完全可以让PHP给你算算一加一等于几,然后在浏览器输出,不要觉得幼稚,这的确是跟阿波罗登月一样,你打的是一小段代码,但是对于你的编程之路,可是迈出了一大步啊!兴奋吧?但是不得不再给你泼点冷水,您还是菜鸟一个。
高兴一段时间就必须继续努力了,接下来就是学习数据库了,MYSQL可算是PHP的黄金搭档了,不过,虽然话是这么说,你也可能恨不得把MYSQL给生吞活剥了,因为这一行一列的东东简直让自己头晕目眩。 头晕归头晕,目眩归目眩,你不可能吃饭的时候咬了自己一下舌头就从此不吃饭了不是?放下畏惧,继续努力,咱们是来征服它的,而不是被它征服的,振奋起来吧同志。 在一番搏斗之后,你终于理解了数据库的概念,而且让你兴奋不已的是你终于可以通过PHP来连接数据库了,这期间你是怎么学会的,我们不去考证了,但是事实证明,你已经可以了。
学会了PHP和数据库的你,无疑是左手拿着MOTOLOLA右手拿着NOKIA,要多潇洒,有多潇洒,哈哈,终于学会了,但是可能这个时候,又会有人不经意的拍拍肩膀对你说:哥们,别高兴的太早,你还是菜鸟,离学会还差着一大截呢! 等到你发奋努力的学会了用PHP成功的插入,删除,更新数据的时候,显然,你已经距离成功指日可待了。 这个时候的你也许是这种状态:
你会HTML吗?会,我能编好几个大表格排板的网页啦!
你会PHP吗?会,我会把一加一的运算写在函数里,然后调用啦!
你会MYSQL吗?会,我会把我的信息在数据库里插入删除啦
那,接下来你该怎么做呢?我觉得,小试一下身手,大概是没问题了,那么交给你个任务,做个留言本吧,这和HELLO WORLD有一比啊!^_^,同是新手面临的第一道关。
花了一段时间,你终于学会把表单的数据插入数据库,然后显示出来了,应该说一个程序的雏形已经诞生了。
但是,你可能瞅瞅东,看看西,人家这个编论坛,那个CMS,还有那啥CRM,我啥时候写一个呢? 不要急,可以说你的马步已经扎的差不多了,接下来就要开始练把势的时候了,如果有条件的话,用笔或者打印一个简易的PHP手册在身上,时不时的摸出来看看,记得,去WC也不能放过(^2^)。
再有条件的话,买本书看看吧,《PHP+MYSQL WEB开发(第三版)》号称圣经级,(也许是个不错的选择(声明:作者没给我啥好处费,我也不是书托,隔着大老远,我连他老兄的面都没见过的说-_-)
巩固了自己的知识,熟悉了PHP和MYSQL开发的要领之后,再回头看你写的那个留言本,你也许会怀疑那真的是你写的吗?当然,如果屋里还有鬼的话,也许是它写的-_- 这个时候,你的留言本应该加入注册以及分页功能了,而如果你更强的话,UI(用户界面)也可以加强,完成之后,感觉是不是特有成就感?不管怎么样,咱好歹是写了一个动态网站程序了,放在自己的网站上耍耍吧,让好朋友来看看,嘿,看咱写的多棒,然后再在网上宣传一下。
几天之后你再打开留言本,哎?哇,一下弹出N多页面!很明显,你的留言本并没有做好安全防范,被人用JS代码小小的耍了一下,我很同情你这个时候的感受,但是没有别的办法了,继续努力吧!
你发奋努力,熟悉了安全方面的问题,然后又设计了一些程序,感觉还不错。
那么接下来,这就算学会啦?NO,NO,NO,还早呢,你至尽还没碰过OOP之类的吧?模板呢?
恩,学!加紧学呀学,学会了这些之后,你又学会了生成静态网页,现在你应该接触一下XML了,恩,XML也了解了,那么AJAX你也得接触接触吧?AJAX完了....然后... 总而言之,你绝对不会发现你全部都学会了,一些真正的强人总会搞出新玩意来丢给你,你不学就落后了,也印证了前人的经验,果然是学无止境啊!
我想通过我的一番YY,你也应该大致熟悉了一些学习过程,也许我的过程和你的有些出路,但是不管怎么样是殊途同归,我写这么多,也只是给大家一个借鉴的机会,至于好与不好,默默不敢打包票^0^
看完之后你发现,罗嗦这么多,对我一点用处没有啊,我知道该怎么学,但是我想如何才能更快的学,一周速成,啊不,24小时速成那种,默默你有没?
我.......我没有,但是2分钟之内把你扁进医院里,我倒是有把握-_-
学东西,永远不要妄想有速成这一说,告诉你了一个方式,但是缺少努力这一环节,那也是白搭。 但是有一点我可以给你保证的就是,你学会了PHP,那么学其他的语言,肯定速成,反过来也一样,如果你之前学过其他的语言,那么学PHP肯定快。
不过语法好学,但是怎么用语法来实现每个人都有每个人的方式,几乎是各有千秋。然而借鉴别人成功的代码,绝对是有益无害,因此,多看那些经过千锤百炼凝出来的经典代码,是进阶的最好方法。
讲了这么多,无非是想说:学习PHP不仅要掌握方法,更多的是付出汗水,我不希望看到中途放弃的人,相信自己,相信自己的选择,更要相信自己的能力,如果自己想放弃,暴力一点的话,就自己抽自己一个嘴巴,然后大吼:别人可以,我为什么就不可以?(是不是有点阎罗教练的味道,默默的确是电影看多了,抽嘴巴是会痛的,各位其实明白这个道理了就行了)
另外要叮嘱各位的是,抵御诱惑,ASP/PHP/JSP/.NET的对比也许会让你无所适从,你也许学了一半PHP,又开始打C#的主意,或者有人说JAVA很强,这个时候的你绝对不能动摇,哪怕你真想学,也得学会了PHP。然后再学,见异思迁是最不可取的,狗熊掰玉米就是这个道理,如果经常中途放弃,只能是一无所获,还浪费了N多的时间和经历,得不偿失,最重要的是,你会被别人瞧不起,没有人会喜欢和见异思迁的人交朋友,因为这种人太不安分,太不可靠,因此,你必须要强迫自己完成自己的目标,哪怕可能会很难受,也得坚持,毅力就是这么锻炼出来的。
‘玖’ 提高PHP编程效率的53个要点
用单引号代替双引号来包含字符串 这样做会更快一些 因为PHP会在双引号包围的字符串中搜寻变量 单引号则不会 注意 只有echo能这么做 它是一种可以把多个字符串当作参数的“函数”(译注 PHP手册中说echo是语言结构 不是真正的函数 故把函数加上了双引号)
如果能将类的方法定义成static 就尽量定义成static 它的速度会提升将近 倍
$row[’id’] 的速度是$row[id]的 倍
echo 比 print 快 并且使用echo的多重参数(译注 指用逗号而不是句点)代替字符串连接 比如echo $str $str
在执行for循环之前确定最大循环数 不要每循环一次都计算最大值 最好运用foreach代替
注销那些不用的变量尤其是大数组 以便释放内存
尽量避免使用__get __set __autoload
require_once()代价昂贵
include文件时尽量使用绝对路径 因为它避免了PHP去include_path里查找文件的速度 解析操作系统路径所需的时间会更少
如果你想知道脚本开始执行(译注 即服务器端收到客户端请求)的时刻 使用$_SERVER[‘REQUEST_TIME’]要好于time()
函数代替正则表达式完成相同功能
str_replace函数比preg_replace函数快 但strtr函数的效率是str_replace函数的四倍
如果一个字符串替换函数 可接受数组或字符作为参数 并且参数长度不太长 那么可以考虑额外写一段替换代码 使得每次传递参数是一个字符 而不是只写一行代码接受数组作为查询和替换的参数
使用选择分支语句(译注 即switch case)好于使用多个if else if语句
用@屏蔽错误消息的做法非常低效 极其低效
打开apache的mod_deflate模块 可以提高网页的浏览速度
数据库连接当使用完毕时应关掉 不要用长连接
错误消息代价昂贵
在方法中递增局部变量 速度是最快的 几乎与在函数中调用局部变量的速度相当
递增一个全局变量要比递增一个局部变量慢 倍
递增一个对象属性(如 $this >prop++)要比递增一个局部变量慢 倍
递增一个未预定义的局部变量要比递增一个预定义的局部变量慢 至 倍
仅定义一个局部变量而没在函数中调用它 同样会减慢速度(其程度相当于递增一个局部变量) PHP大概会检查看是否存在全局变量
方法调用看来与类中定义的方法的数量无关 因为我(在测试方法之前和之后都)添加了 个方法 但性能上没有变化
派生类中的方法运行起来要快于在基类中定义的同样的方法
调用带有一个参数的空函数 其花费的时间相当于执行 至 次的局部变量递增操作 类似的方法调用所花费的时间接近于 次的局部变量递增操作
Apache解析一个PHP脚本的时间要比解析一个静态HTML页面慢 至 倍 尽量多用静态HTML页面 少用脚本
除非脚本可以缓存 否则每次调用时都会重新编译一次 引入一套PHP缓存机制通常可以提升 %至 %的性能 以免除编译开销
‘拾’ 哪些方法适合PHP程序员学习
PHP程序员有哪些学习方法呢?下面为您详细例举几点。
1、重基础,从最简单的开始。
熟悉HTML/CSS/JS等基本元素,熟悉PHP语法,了解PHP和HTML的运行方式,学习将PHP与HTML结合完成简单页面。
2、提高自己的记忆力。
每门语言都是有自己强大的函数库,良好的记忆力能使学习达到事半功倍的效果。
3、增强自己的逻辑思维能力。
4、观察他人写代码,学习别人的长处。
5、实践,基础与运用相结合。
学习的方法有很多,而找对适合自己的方法是非常重要的,在这个过程中我们需要不断去尝试,才能达到自己想要的效果。
今天的分享就是这些了,希望能帮助到大家!