仓酷云

标题: PHP网站制作之PHP 高手之路(一) [打印本页]

作者: 只想知道    时间: 2015-2-4 00:28
标题: PHP网站制作之PHP 高手之路(一)
聪明的你,显然已经逐渐的开悟了,慢慢的理解了编程的概念,那么祝贺你,你已经迈出了成功的第一步。   PHP是一门高效的收集编程言语,因为它具有编写天真、运转疾速等长处,敏捷成为Web法式员的首选言语。前不久的一份威望查询拜访标明,如今已有31.6%的网站利用PHP作为次要的办事器端编程言语。
然而,要成为一位PHP编程高手却其实不轻易。其实不像良多人想象的那样,只需可以飞快地编写几条复杂的代码去处理一个庞杂的成绩就是PHP编程高手了,真实的PHP高手还需求思索更多的其它成绩。以下三条原则是一位成熟的PHP法式员在编程中应当起首遵守的原则。
1.怠惰是金
2.编写大度的代码
3.寻求法式的速度,而不是编程的速度
1、怠惰是金
做一个怠惰的法式员吗?这个设法太奇异了!由于这个世界上最劳碌的人能够就是盘算机法式员了。但恰是由于法式员太忙了,所以才应当在编程时学会偷懒。
关于一个法式员来讲,怠惰的办法有两种:其一,勇敢利用现成的他人的法式代码,把这些代码融入到你本人的法式或项目中去。其二是编写一些有效的代码创立一个函数库,在未来编写法式时可以随手拈来,省去了很多反复的休息,天然就能够怠惰一点了。
这两种偷懒的办法都十分合适PHP法式员了。
起首,PHP是在自在开放的情况中出生和生长的一门言语。活着界各地,有不计其数的法式员,他们一向在为PHP的完善而不休斗争,他们也情愿和他人分享本人的伶俐才干和本人编写的代码。你天天都可以从一些PHP网站、邮件列表、旧事组发明大批的优异的法式代码。如许说,我并非勉励你成天等着让他人为你编写代码,然而你可以“站在巨人的肩膀上”,充实发扬“拿来主义”,伶俐地使用他人的法式代码可以节俭你大批工夫。其次,在PHP中,你可以便利地创立本人的函数库,如许可以在你今后编写法式时省去良多费事。
上面笔者为人人引见几个通用的函数,这些函数有的来自网上的一些开放源代码的项目,有的精选自邮件列表。假如你能把它们到场到你本人的函数库中,早晚你将会发明本人获益良多。
1.通用数据库处置函数
和其它的CGI函数比拟,PHP的长处之一是具有很壮大的数据库处置才能。然而,在PHP中,关于分歧的数据库都利用一些特定的函数来专门处置,短少通用的数据库处置函数。这大大下降了法式代码的可移植性,这也为初学编程的伴侣带来了良多方便。
在网上,很多法式员都经由过程封装类处理了这个成绩。他们编写了一致的函数用来处置任何盛行的数据库??不论是在Linux世界深受接待的Mysql仍是在Windows平台上普遍盛行的SqlServer。就笔者团体来讲,十分喜好利用这些函数,由于可以直接利用一些复杂的诸如"query"、"next_record"之类的函数,而不需求思索数据库的毗连、数据库句柄这些庞杂的器材,更不需求思索利用的是何种数据库。
假如你需求这些函数,你可以经由过程会见以下的几个网址而失掉:
http://phplib.netuse.de/
http://phpclasses.UpperDesign.com/browse.html/package/20
http://phpdb.linuxbox.com/
2.变量调试函数
PHP法式的调试一向是一件让人头疼的事,它既不像VB等初级言语那样有集成的编译调试情况,也不想Perl那样可以在Linux或DOS情况下直接运转。其实,咱们完整可以经由过程天真地利用echo语句来完成对PHP的调试任务。
上面的几个函数可让你随时检查法式中任何变量的类型及其值。
function ss_array_as_string (&$array, $column = 0) {
$str = "Array(
n";
while(list($var, $val) = each($array)){
for ($i = 0; $i < $column+1; $i++){
$str .= "&nbsp;&nbsp;&nbsp;&nbsp;";
}
$str .= $var. ==> ;
$str .= ss_as_string($val, $column+1)."
n";
}
for ($i = 0; $i < $column; $i++){
$str .= "&nbsp;&nbsp;&nbsp;&nbsp;";
}
return $str.);
}
function ss_object_as_string (&$object, $column = 0) {
if (empty($object->classname)) {
return "$object";
}
else {
$str = $object->classname."(
n";
while (list(,$var) = each($object->persistent_slots)) {
for ($i = 0; $i < $column; $i++){
$str .= "&nbsp;&nbsp;&nbsp;&nbsp;";
}
global $$var;
$str .= $var. ==> ;
$str .= ss_as_string($$var, column+1)."
n";
}
for ($i = 0; $i < $column; $i++){
$str .= "&nbsp;&nbsp;&nbsp;&nbsp;";
}
return $str.);
}
}
function ss_as_string (&$thing, $column = 0) {
if (is_object($thing)) {
return ss_object_as_string($thing, $column);
}
elseif (is_array($thing)) {
return ss_array_as_string($thing, $column);
}
elseif (is_double($thing)) {
return "Double(".$thing.")";
}
elseif (is_long($thing)) {
return "Long(".$thing.")";
}
elseif (is_string($thing)) {
return "String(".$thing.")";
}
else {
return "Unknown(".$thing.")";
}
}
需求的时分,在法式中复杂地到场上面的一条代码便可检查法式中的所利用的变量(包含数组和对象)的类型和值:
echo ss_as_string($my_variable);
利用上面的语句,咱们可以直接检查法式中一切的变量的值:
echo ss_as_string($GLOBALS);
3. 掌握Log信息的函数
调试PHP法式的别的一种主要的办法就是检查Log信息。假如可以便利地掌握Log信息的级别和Log信息的显示内容,将会给法式调试带来更多的便当。上面的几个函数可以便利地完成这个功效。
$ss_log_level = 0;
$ss_log_filename = /tmp/ss-log;
$ss_log_levels = array(
NONE => 0,
ERROR => 1,
INFO => 2,
DEBUG => 3);
function ss_log_set_level ($level = ERROR) {
global $ss_log_level;
$ss_log_level = $level;
}
function ss_log ($level, $message) {
global $ss_log_level, $ss-log-filename;
if ($ss_log_levels[$ss_log_level] < $ss_log_levels[$level]) {
// 不显示Log信息
return false;
}
$fd = fopen($ss_log_filename, "a+");
fputs($fd, $level. - [.ss_timestamp_pretty().] - .$message."n");
fclose($fd);
return true;
}
function ss_log_reset () {
global $ss_log_filename;
@unlink($ss_log_filename);
}
在下面的函数中,有四个Log级别变量。运转PHP法式时,只要当Log的级别低于预设的级别值时,Log信息才可以被纪录和显示出来。例如,在法式中到场以下的一条语句:
ss_log_set_level(INFO);
那末,运转PHP法式时,只要ERROR和INFO级其余LOG信息才干被纪录和显示出来,DEBUG级的信息则被疏忽了。除此以外,咱们还可以设定显示的信息内容,其语句以下:
ss_log(ERROR, "testing level ERROR");
ss_log(INFO, "testing level INFO");
ss_log(DEBUG, "testing level DEBUG");
你也能够随时利用上面的语句清空LOG信息:
ss_log_reset();
4.速度测试函数

为了优化代码,咱们需求一种可以测试代码运转工夫的办法,从而来选择最优的代码。上面的函数可以测试运转代码所需的工夫:
function ss_timing_start ($name = default) {
global $ss_timing_start_times;
$ss_timing_start_times[$name] = explode( , microtime());
}
function ss_timing_stop ($name = default) {
global $ss_timing_stop_times;
$ss_timing_stop_times[$name] = explode(, microtime());
}
function ss_timing_current ($name = default) {
global $ss_timing_start_times, $ss_timing_stop_times;
if (!isset($ss_timing_start_times[$name])) {
return 0;
}
if (!isset($ss_timing_stop_times[$name])) {
$stop_time = explode(, microtime());
}
else {
$stop_time = $ss_timing_stop_times[$name];
}
$current = $stop_time[1] - $ss_timing_start_times[$name][1];
$current += $stop_time[0] - $ss_timing_start_times[$name][0];
return $current;
}
如今可以轻松地反省任何一段代码的履行工夫了,乃至咱们可以同时利用多个计时器,只需在利用上述的几个函数时设定分歧的参数作为计时器的称号就能够了。
5.调试和优化数据库的操作
关于数据库来讲,运转速度是相当主要的。虽然良多书本和文章都教学了一些疾速运转数据库的办法,然而一切的办法都必需经由理论的查验。上面咱们将把PHPLib函数库中的query()函数和下面引见的几个函数综合起来编写成新的query()函数,和本来的函数比拟,这个函数增添了运转工夫的监测功效。
function query($Query_String, $halt_on_error = 1) {
$this->connect();
ss_timing_start();
$this->Query_ID = @mysql_query($Query_String,$this->Link_ID);
ss_timing_stop();
ss_log(INFO, ss_timing_current(). Secs - .$Query_String);
$this->Row = 0;
$this->Errno = mysql_errno();
$this->Error = mysql_error();
if ($halt_on_error && !$this->Query_ID) {
$this->halt("Invalid SQL: ".$Query_String);
}
return $this->Query_ID;
}(未完待续)  PHP于1994年由Rasmus Lerdorf创建,刚刚开始是Rasmus Lerdorf为了要维护个人网页而制作的一个简单的用Perl语言编写的程序。
作者: 兰色精灵    时间: 2015-2-4 13:12
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
作者: 透明    时间: 2015-2-6 16:37
做为1门年轻的语言,php一直很努力。
作者: 简单生活    时间: 2015-2-12 06:15
装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。
作者: admin    时间: 2015-2-15 22:33
我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。
作者: 灵魂腐蚀    时间: 2015-2-26 01:18
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
作者: 因胸联盟    时间: 2015-3-8 11:13
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
作者: 若天明    时间: 2015-3-11 00:17
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
作者: 飘灵儿    时间: 2015-3-13 02:39
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
作者: 不帅    时间: 2015-3-13 22:08
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
作者: 乐观    时间: 2015-3-16 21:19
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
作者: 分手快乐    时间: 2015-3-20 11:13
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
作者: 金色的骷髅    时间: 2015-3-26 09:49
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
作者: 活着的死人    时间: 2015-4-3 04:48
如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
作者: 小魔女    时间: 2015-4-8 17:31
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
作者: 再见西城    时间: 2015-4-10 05:33
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
作者: 莫相离    时间: 2015-4-15 23:10
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
作者: 山那边是海    时间: 2015-4-16 06:16
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
作者: 冷月葬花魂    时间: 2015-4-18 11:20
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
作者: 深爱那片海    时间: 2015-4-21 19:46
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2