热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何提高PHP编程技能及推荐高级教程

本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。

本文目录一览:


  • 1、求PHP高级教程(提高阶层次)


  • 2、推荐一本PHP高级教程


  • 3、php高级教程


  • 4、求经典PHP基础教程?


  • 5、PHP程序员要掌握的知识以及相关书籍

求PHP高级教程(提高阶层次)

学习php:

学习任何一种编程语言都需要长期的坚持和不懈的努力才可以获得成功!

三个星期看了两部教程? 即使你有很好的语言基础,这也只能用走马观花来形容你的学习过程。

总希望在短期之内让自己的知识量有一个质的提升和飞跃,除了天才和务实的人,没有其它人做得到。

php100和孙仲岳的教程只能算是入门教程,不过,要想把他们二位所教授的知识消化好,至少需要3-5个月的时间,即使你有很好的语言基础也不例外,因为这背后需要你做大量的实践方可真正理解、吃透php语言。

就比如说php语言中的单引号和双引号之间的区别、它们之间各种组合的特异性等,我相信如果你专门来对它进行实践操作学习,没有4-5个小时,就不要妄想了。然而,php语言中的单引和双引和其它任何一门语言的用法都不相同。

你这种学习方式固然有自己的道理,首先走马观花看上大概,心中对php整体有个大概了解,然后再深入细致学习就会从整体来考虑局部,使自己有一个大局观,但是,这种学习方式的初期也就注定了你无法真正懂得这门语言,也就是说,至今为止,你无法真正完成一个像模像样的网站。

php的提高更不是一门教程就能够完全教授完全的,正如一楼所讲,那些附属类语言个个不可少,而且在这之外,还包括php zend,就拿这个php的一个加密分支来讲,就不是三五个月可以玩下来的。

php知识的学习在效果的体现上,基本呈现余切曲线的样子,也就是说,起初会觉得进步如此之快,然而,学习越是深入,越是发觉前路漫漫,无尽兮!

php语言本身并没有多么神秘,但它的扩展能力强悍无匹,每一个扩展都够任何一个编程学者研究上十天两月,随着时间的推移,现在的扩展几乎遍布电脑个个领域,图像、音频、视频、文字、统计等等,而这些扩展又都各自独立,互不干扰交叉,相信只要你有精力,你永远也学不完!

另外,网络安全也同样是一个编程者必知的知识,就比如APACHE模块本身哪些版本存在内存泄漏,这些细小环节都是知识!汇聚之后才发现,它将是一片大海汪洋。

3个星期的学习就感觉它没有前途?这么说吧,腾讯、百度这些大公司都在招聘网络安全负责人,就我最后讲的安全一项分支,就可用掉你毕生时间去深入、去领会!

如果你真有野心,考个微软认证工程师,你的工作还愁吗?但认证工程师的背后,是多少辛苦和汗水。

推荐一本PHP高级教程

我是初学者,但是我可以给你推荐一个网站里面有视频教程,也有比较深入的高级编程讨论,你不妨去看一看。

php高级教程

php高级教程

导语:php是it行业语言,也是一门较热的网络技术,下面就由我为大家介绍一下php高级教程,欢迎大家阅读!

一、PHP- 多维数组:

$cars = array(

array("huawei","12","11"),

array("meizu","23","12"),

array("iphone","12","4")

);

$title = array("手机总共有:","个,已经卖出去了","个!");

for($i=0;$i{ for($j=0;$j { echo $cars[$i][$j]; echo $title[$j]; } echo " ";}?

输出:

huawei手机总共有:12个,已经卖出去了11个!

meizu手机总共有:23个,已经卖出去了12个!

iphone手机总共有:12个,已经卖出去了4个!

二、PHP 日期和时间

date() 函数的格式参数是必需的,它们规定如何格式化日期或时间。

下面列出了一些常用于日期的字符:

·d - 表示月里的某天(01-31) D-表示当前这天的英文星期简写

·m - 表示月(01-12) M-表示当前月的英文缩写

·Y - 表示年(四位数) y-表示年(后两位数)

·1 - 表示周里的某天 L-返回0

其他字符,比如 "/","." 或 "-" 也可被 插入字符中,以增加其他格式。

echo"今天是 " . date("YYYY/m/d") ." "; //2017201720172017/06/26 由此可见不能用js中yyyy-mm-dd的形式

echo"今天是 " . date("Y.m.d") . " "; //2017.06.26

echo"今天是 " . date("Y-M-D") . " "; //17-Jun-Mon

echo"今天是 " . date("l") . " "; //Monday 星期全称

echo"今天是 " . date("L") . " "; //0

?

获得简单的时间

下面是常用于时间的字符:

date_default_timezone_set("Asia/Shanghai"); //设置时区

echo date_default_timezone_get(oid);//获取当前时区

·h - 带有首位零的 12 小时小时格式 H-24小时格式

·i - 带有首位零的分钟 I-0

·s - 带有首位零的秒(00 -59) S-返回th我也不知道是什么鬼

·a - 小写的午前和午后(am 或 pm) A-返回大写格式:AM或PM

echo"现在是 " . date("h:i:sa") . " "; //现在是 02:15:44pm

echo"现在是 " . date("H:I:SA") . " "; //现在是 14:0:thPM

通过 PHP mktime() 创建日期

date() 函数中可选的时间戳参数规定时间戳。如果您未规定时间戳,将使用当前日期和时间

语法

mktime(hour,minute,second,month,day,year)

$d=mktime(9,12, 31, 6, 10, 215) ;

echo"创建日期是 " . date("Y-m-d h:i:sa", $d) ." "; //在date方法里面传参则取的是参数中的时间,如果不传的话则取的是当前时间

通过 PHP strtotime() 用字符串来创建日期

PHP strtotime() 函数用于把人类可读的字符串转换为Unix 时间。

$d=strtotime("10:38pm April 15 2015");

echo "创建日期是 " . date("Y-m-d h:i:sa", $d);

如果输入了它不能识别的字符串则保存为 1970-01-01 12:00:00am

计算两个时间段内的时间所有的周六

$startdate = strtotime("Saturday");

$enddate = strtotime("+6 weeks",$startdate);

while ($startdate $enddate) {

echo date("M d", $startdate)," ";

$startdate = strtotime("+1 week", $startdate); //在$startdate基础上加一个礼拜,你还可以加1天,1个月,1年

}

?

计算距离某一天还有多长时间

$d1=strtotime("2017-7-30");

$d2=ceil(($d1-time())/60/60/24);

echo "距离十二月三十一日还有:" . $d2 ." 天。";

?

三、PHP COOKIEs

COOKIE 常用于识别用户。COOKIE 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 COOKIE。通过 PHP,您能够创建并取回 COOKIE 的值。

创建COOKIE

setCOOKIE() 函数用于设置 COOKIE。

注释:setCOOKIE() 函数必须位于

标签之前。

语法

setCOOKIE(name, value, expire, path, domain);

在下面的例子中,我们将创建名为 "user" 的 COOKIE,把为它赋值 "Alex Porter"。我们也规定了此 COOKIE 在一小时后过期:

setCOOKIE("user", "Alex Porter", time()+3600);

?

注释:在发送 COOKIE 时,COOKIE 的值会自动进行 URL 编码,在取回时进行自动解码(为防止 URL 编码,请使用setrawCOOKIE() 取而代之)。

取回 COOKIE 的值

PHP 的 $_COOKIE 变量用于取回COOKIE 的值。

// Print a COOKIE

echo $_COOKIE["user"];

// A way to view all COOKIEs

print_r($_COOKIE);

?

删除 COOKIE当删除 COOKIE 时,您应当使过期日期变更为过去的时间点。

// set the expiration date to one hour ago

setCOOKIE("user", "", time()-3600);

?

如果浏览器不支持 COOKIE 该怎么办?

如果您的应用程序涉及不支持COOKIE 的浏览器,就不得不采取其他方法在应用程序中从一张页面向另一张页面传递信息。一种方式是从表单传递数据(有关表单和用户输入的内容,稍早前我们已经在本教程中介绍过了)。

下面的表单在用户单击提交按钮时向"welcome.php" 提交了用户输入:

Name:

Age:

取回"welcome.php" 中的值,就像这样:

Welcome .

You are years old.

四、PHP Sessions

PHP Session 变量

当您运行一个应用程序时,您会打开它,做些更改,然后关闭它。这很像一次会话。计算机清楚你是谁。它知道你何时启动应用程序,并在何时终止。但是在因特网上,存在一个问题:服务器不知道你是谁以及你做什么,这是由于 HTTP 地址不能维持状态。

通过在服务器上存储用户信息以便随后使用,PHP session 解决了这个问题(比如用户名称、购买商品等)。不过,会话信息是临时的,在用户离开网站后将被删除。如果您需要永久储存信息,可以把数据存储在数据库中。

Session 的工作机制是:为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在COOKIE 中,亦或通过 URL 进行传导。

开始 PHP Session

在您把用户信息存储到 PHPsession 中之前,首先必须启动会话。

注释:session_start() 函数必须位于

标签之前:

上面的代码会向服务器注册用户的会话,以便您可以开始保存用户信息,同时会为用户会话分配一个 UID。

存储 Session 变量

存储和取回session 变量的正确方法是使用 PHP$_SESSION 变量:

session_start();

// store session data

$_SESSION['views']=1;

?

//retrieve session data

echo "Pageviews=". $_SESSION['views'];

?

输出:

Pageviews=1

在下面的例子中,我们创建了一个简单的 page-view 计数器。isset() 函数检测是否已设置 "views" 变量。如果已设置 "views" 变量,我们累加计数器。如果 "views" 不存在,则我们创建 "views" 变量,并把它设置为 1:

session_start();

if(isset($_SESSION['views']))

$_SESSION['views']=$_SESSION['views']+1;

else

$_SESSION['views']=1;

echo "Views=". $_SESSION['views'];

?

终结 Session

如果您希望删除某些session 数据,可以使用 unset() 或 session_destroy() 函数。

unset() 函数用于释放指定的 session 变量:

unset($_SESSION['views']);

?

您也可以通过session_destroy() 函数彻底终结 session:

session_destroy();

?

注释:session_destroy() 将重置 session,您将失去所有已存储的session 数据。

五、PHP 错误处理

错误处理方法:

·简单的 "die()" 语句

·自定义错误和错误触发器

·错误报告

为了避免用户获得类似上面的错误消息,我们在访问文件之前检测该文件是否存在:

if(!file_exists("welcome.txt"))

{

die("File not found");

}

else

{

$file=fopen("welcome.txt","r");

}

?

假如文件不存在,您会得到类似这样的错误消息:

File not found

比起之前的代码,上面的代码更有效,这是由于它采用了一个简单的错误处理机制在错误之后终止了脚本。

不过,简单地终止脚本并不总是恰当的方式。让我们研究一下用于处理错误的备选的 PHP 函数。

创建自定义错误处理器

创建一个自定义的错误处理器,可以在PHP 中发生错误时调用该函数。

该函数必须有能力处理至少两个参数(error level 和 error message),但是可以接受最多五个参数(可选的:file, line-number 以及error context):

语法

error_function(error_level,error_message,

error_file,error_line,error_context)

参数描述

error_level:必需。为用户定义的错误规定错误报告级别。必须是一个值数。参见下面的表格:错误报告级别。

error_message:必需。为用户定义的错误规定错误消息。

error_file:可选。规定错误在其中发生的文件名。

error_line:可选。规定错误发生的行号。

error_context:可选。规定一个数组,包含了当错误发生时在用的每个变量以及它们的值。

创建错误处理函数

function customError($errno, $errstr)

{

echo "Error: [$errno] $errstr

";

echo "Ending Script";

die();

}

现在,我们已经创建了一个错误处理函数,我们需要确定在何时触发该函数。

Set ErrorHandler

PHP 的默认错误处理程序是内建的错误处理程序。我们打算把上面的函数改造为脚本运行期间的默认错误处理程序。

可以修改错误处理程序,使其仅应用到某些错误,这样脚本就可以不同的方式来处理不同的错误。不过,在本例中,我们打算针对所有错误来使用我们的自定义错误处理程序:

set_error_handler("customError");

由于我们希望我们的自定义函数来处理所有错误,set_error_handler() 仅需要一个参数,可以添加第二个参数来规定错误级别。

//定义错误处理函数

function customError($errno, $errstr)

{

echo "rror: [$errno] $errstr";

}

//设置错误处理函数

set_error_handler("customError");

//触发错误

echo($test);

?

可能的错误类型:

·E_USER_ERROR - 致命的用户生成的run-time 错误。错误无法恢复。脚本执行被中断。

·E_USER_WARNING - 非致命的用户生成的run-time 警告。脚本执行不被中断。

·E_USER_NOTICE - 默认。用户生成的`run-time 通知。脚本发现了可能的错误,也有可能在脚本运行正常时发生。

例子

在本例中,如果"test" 变量大于 "1",则发生E_USER_WARNING 错误。如果发生了 E_USER_WARNING,我们将使用我们的自定义错误处理程序并结束脚本:

//error handler function

function customError($errno, $errstr)

{

echo "Error: [$errno] $errstr

";

echo "Ending Script";

die();

}

//set error handler

set_error_handler("customError",E_USER_WARNING);

//trigger error

$test=2;

if ($test1)

{

trigger_error("Value must be 1 or below",E_USER_WARNING);

}

?

错误记录

通过 E-Mail 发送错误消息

function customError($errno, $errstr)

{

echo "Error: [$errno] $errstr ";

echo "Webmaster has been notified";

error_log("Error: [$errno] $errstr",1,

"526369948@qq.com","From: 526369948@qq.com");

}

六、PHP 异常处理

异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程。这种情况称为异常。

当异常被触发时,通常会发生:

·当前代码状态被保存

·代码执行被切换到预定义的异常处理器函数

·根据情况,处理器也许会从保存的代码状态重新开始执行代码,终止脚本执行,或从代码中另外的位置继续执行脚本

我们将展示不同的错误处理方法:

·异常的基本使用

·创建自定义的异常处理器

·多个异常

·重新抛出异常

·设置顶层异常处理器

Try, throw 和 catch

要避免上面例子出现的错误,我们需要创建适当的代码来处理异常。

正确的处理程序应当包括:

1.Try - 使用异常的函数应该位于"try" 代码块内。如果没有触发异常,则代码将照常继续执行。但是如果异常被触发,会抛出一个异常。

2.Throw - 这里规定如何触发异常。每一个 "throw" 必须对应至少一个 "catch"

3.Catch - "catch" 代码块会捕获异常,并创建一个包含异常信息的对象

让我们触发一个异常:

//创建可抛出一个异常的函数

function checkNum($number)

{

if($number1)

{

throw new Exception("Value must be 1 or below");

}

return true;

}

//在 "try" 代码块中触发异常

try

{

checkNum(2);//如果抛出异常则执行catch中的语句,这里就不接着往下执行了

//If the exception is thrown, this text will not be shown

echo 'If you see this, the number is 1 or below';

}

//捕获异常

catch(Exception $e)

{

echo 'Message: ' .$e-getMessage();

}

?

上面代码将获得类似这样一个错误:

Message: Value must be 1 or below

创建一个自定义的 Exception 类

创建自定义的异常处理程序非常简单。我们简单地创建了一个专门的类,当 PHP 中发生异常时,可调用其函数。该类必须是 exception 类的一个扩展。

这个自定义的exception 类继承了 PHP 的 exception 类的所有属性,您可向其添加自定义的函数。

我们开始创建exception 类:

class customException extends Exception //extends 相当于继承关键字

{

public function errorMessage() //定义了自己的报错函数

{

//error message 在继承的类中,可以访问基类的方法

$errorMsg = 'Error on line '.$this-getLine().' in '.$this-getFile()

.': '.$this-getMessage().' is not a valid E-Mail address';

return $errorMsg;

}

}

$email = "someone@example...com";

try

{

//check if

if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE)

{

//throw exception if email is not valid

throw new customException($email);

}

}

catch (customException $e)

{

//display custom message

echo $e-errorMessage();

}

?

这个新的类是旧的exception 类的副本,外加 errorMessage() 函数。正因为它是旧类的副本,因此它从旧类继承了属性和方法,我们可以使用 exception 类的方法,比如 getLine() 、getFile() 以及 getMessage()。

多个异常

可以为一段脚本使用多个异常,来检测多种情况。

可以使用多个if..else 代码块,或一个 switch 代码块,或者嵌套多个异常。这些异常能够使用不同的 exception 类,并返回不同的错误消息:

求经典PHP基础教程?

《PHP与MySQL程序设计》《 PHP web 2.0开发实战》《 PHP高级程序设计:模式、框架与测试 》《PHP实战》(PHP in Action) 《深入PHP面向对象、模式与实践 (第2版) 》《PHP和MySQL Web开发原书第4版 》《 PHP经典实例(第二版)》《PHP技术内幕》《 PHP与MYSQL基础教程 》

PHP程序员要掌握的知识以及相关书籍

我认为,首先,要想成为一个程序员,C或者C++或者JAVA是必须选择一门掌握的,因为其中的编程思想和编程方法和这些语言所具有的广大使用群和库LIB是今后学习其他语言的巨大帮助。

其次,PHP是作为网页后台语言存在的,那么要想做后台,就要把前台的HTML,CSS,JS,flash,甚至是photoshop都要玩通。后台的话,需要补一下数据库和LINUX的知识。

最后推荐一些入门到中级的网站

视频PHP100出的教学视频,兄弟连-电驴上有 出的教学视频

这两个视频都有对应的书。

另外,网上可以下载到明日科技 这个团队出版的书籍 都配有光碟 光碟里边有不同功能模块(例如博客系统、商城系统、OA系统)的源码,多读这些源码,对编程帮助很大。

再到高级就是大数据存储、网络优化的东西了吧,我的水平还没接触到,你加油吧~


推荐阅读
  • XMLhttpREquest_Ajax技术总结之XmlHttpRequest
    Ajax1、 什么是ajax   ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文由编程笔记#小编整理,主要介绍了关于数论相关的知识,包括数论的算法和百度百科的链接。文章还介绍了欧几里得算法、辗转相除法、gcd、lcm和扩展欧几里得算法的使用方法。此外,文章还提到了数论在求解不定方程、模线性方程和乘法逆元方面的应用。摘要长度:184字。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 我正在尝试使用scrapycrallsingle运行完美运行的scrapy蜘蛛,但我无法在python脚本中运行它.主要问题是从不执行SingleBlogSpider.parse方 ... [详细]
  • 找到JDK下载URL当然去官网找了。目前最新的1.8的下载URL(RPM)如下:http:download.oracle.comotn-pubjavajdk8u161-b122f3 ... [详细]
  • Request对象和Response对象request:(请求)当一个页面被请求时,Django就会创建一个包含本次请求原信息的HttpRequest对象。Djang ... [详细]
author-avatar
mobiledu2502858253
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有