热门标签 | 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系统)的源码,多读这些源码,对编程帮助很大。

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


推荐阅读
  • 本文介绍了互联网思维中的三个段子,涵盖了餐饮行业、淘品牌和创业企业的案例。通过这些案例,探讨了互联网思维的九大分类和十九条法则。其中包括雕爷牛腩餐厅的成功经验,三只松鼠淘品牌的包装策略以及一家创业企业的销售额增长情况。这些案例展示了互联网思维在不同领域的应用和成功之道。 ... [详细]
  • macOS Big Sur全新设计大版本更新,10+个值得关注的新功能
    本文介绍了Apple发布的新一代操作系统macOS Big Sur,该系统采用全新的界面设计,包括图标、应用界面、程序坞和菜单栏等方面的变化。新系统还增加了通知中心、桌面小组件、强化的Safari浏览器以及隐私保护等多项功能。文章指出,macOS Big Sur的设计与iPadOS越来越接近,结合了去年iPadOS对鼠标的完善等功能。 ... [详细]
  • 我一直都有记录信息的习惯,不知是从什么时候开始,大约是在工作后不久。如今还真有点庆幸从那时开始记了点东西,当然是电子版的,写 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • Google在I/O开发者大会详细介绍Android N系统的更新和安全性提升
    Google在2016年的I/O开发者大会上详细介绍了Android N系统的更新和安全性提升。Android N系统在安全方面支持无缝升级更新和修补漏洞,引入了基于文件的数据加密系统和移动版本的Chrome浏览器可以识别恶意网站等新的安全机制。在性能方面,Android N内置了先进的图形处理系统Vulkan,加入了JIT编译器以提高安装效率和减少应用程序的占用空间。此外,Android N还具有自动关闭长时间未使用的后台应用程序来释放系统资源的机制。 ... [详细]
  • 集成电路企业在进行跨隔离网数据交换时面临着安全性问题,传统的数据交换方式存在安全性堪忧、效率低下等问题。本文以《Ftrans跨网文件安全交换系统》为例,介绍了如何通过丰富的审批流程来满足企业的合规要求,保障数据交换的安全性。 ... [详细]
  • HTML5网页模板怎么加百度统计?
    本文介绍了如何在HTML5网页模板中加入百度统计,并对模板文件、css样式表、js插件库等内容进行了说明。同时还解答了关于HTML5网页模板的使用方法、表单提交、域名和空间的问题,并介绍了如何使用Visual Studio 2010创建HTML5模板。此外,还提到了使用Jquery编写美好的HTML5前端框架模板的方法,以及制作企业HTML5网站模板和支持HTML5的CMS。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • 本文探讨了容器技术在安全方面面临的挑战,并提出了相应的解决方案。多租户保护、用户访问控制、中毒的镜像、验证和加密、容器守护以及容器监控都是容器技术中需要关注的安全问题。通过在虚拟机中运行容器、限制特权升级、使用受信任的镜像库、进行验证和加密、限制容器守护进程的访问以及监控容器栈,可以提高容器技术的安全性。未来,随着容器技术的发展,还需解决诸如硬件支持、软件定义基础设施集成等挑战。 ... [详细]
  • [转载]从零开始学习OpenGL ES之四 – 光效
    继续我们的iPhoneOpenGLES之旅,我们将讨论光效。目前,我们没有加入任何光效。幸运的是,OpenGL在没有设置光效的情况下仍然可 ... [详细]
  • 转自:微点阅读(www.weidianyuedu.com)微点阅读-范文大全-免费学习知识的网站电脑唯独搜不到自己家wifi,别人家的都能搜到,手机也可以搜到自己家的,就是电脑不可 ... [详细]
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社区 版权所有