php @什么意思
发布时间:2025-05-25 10:58:38 发布人:远客网络
一、php @什么意思
PHP,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写。PHP是一种HTML内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。PHP独特的语法混合了 C、Java、Perl以及 PHP自创新的语法。它可以比 CGI或者 Perl更快速的执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;与同样是嵌入HTML文档的脚本语言JavaScript相比,PHP在服务器端执行,成分利用了服务器的性能;PHP执行引擎还会将用户经常访问的PHP程序驻留在内存中,其他用户在一次访问这个程序时就不需要重新编译程序了,只要直接执行内存中的代码就可以了,这也是PHP高效率的体现之一。PHP具有非常强大的功能,所有的CGI或者JavaScript的功能PHP都能实现,而且支持几乎所有流行的数据库以及操作系统。
PHP最初是1994年Rasmus Lerdorf创建的,刚刚开始只是一个简单的用Perl语言编写的程序,用来统计他自己网站的访问者。后来又用C语言重新编写,包括可以访问数据库。在1995年以Personal Home Page Tools(PHP Tools)开始对外发表第一个版本,Lerdorf写了一些介绍此程序的文档,并且发布了PHP1.0。在这早期的版本中,提供了访客留言本、访客计数器等简单的功能。以后越来越多的网站使用了PHP,并且强烈要且增加一些特性,比如循环语句和数组变量等等,在新的成员加入开发行列之后,在1995年中,PHP2.0发布了。第二版定名为PHP/FI(Form Interpreter)。PHP/FI加入了对mSQL的支持,从此建立了PHP在动态网页开发上的地位。到了1996年底,有15000个网站使用 PHP/FI;时间到了1997年中,使用PHP/FI的网站数字超过五万个。而在1997年中,开始了第三版的开发计划,开发小组加入了 Zeev Suraski及 Andi Gutmans,而第三版就定名为PHP3。2000年,PHP4.0又问世了,其中增加了许多新的特性。
开放的源代码:所有的PHP源代码事实上都可以得到。
基于服务器端:由于PHP是运行在服务器端的脚本,可以运行在UNIX、LINUX、WINDOWS下。
嵌入HTML:因为PHP可以嵌入HTML语言,所以学习起来并不困难。
简单的语言:PHP坚持脚本语言为主,与Java以C++不同。
效率高:PHP消耗相当少的系统资源。
PHP3跟Apache服务器紧密结合的特性;加上它不断的更新及加入新的功能;而且几乎支持所有主流与非主流数据库;再以它能高速的执行效率,使得PHP在1999年中的使用站点已经超过了150000万。加上它的源代码完全公开,在 Open Source意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新的活力,使得PHP无论在UNIX、LINUX或是Windows的平台上都可以有更多新的功能。它提供丰富的函数,使得在程序设计方面有着更好的支持。
PHP4.0整个脚本程序的核心大幅更动,让程序的执行速度,满足更快的要求。在最佳化之后的效率,已较传统CGI或者ASP等程序有更好的表现。而且还有更强的新功能、更丰富的函数库。无论您接不接受,PHP都将在 Web CGI的领域上,掀起巅覆性的革命。对于一位专业的Web Master而言,它将也是必修课程之一。
PHP 4.0是更有效的,更可靠的动态Web页开发工具,在大多数情况运行比 PHP 3.0要快,其脚本描述更强大并且更复杂,最显著的特征是速率比的增加。PHP4.0这些优异的性能是PHP脚本引擎重新设计产生的结果:引擎由 AndiGutmans和 Zeev Suraski从底层全面重写。PHP4.0脚本引擎——Zend引擎,使用了一种更有效的编译——执行方式,而不是PHP 3.0采用的执行——当解析时模型。
PHP4在3.0版的基础上增加或增强了许多有用的特征,主要如下:
(1)别名:在PHP4中,可以利用引用为变量赋值,这给编程带来了很大的灵活性。
(2)扩充了API模块:PHP 4.0为扩展的 API模块的提供了扩展PHP接口模块,它比旧的 API版本显著地快。 PHP模块已有的及最常用的接口多数被转换到使用这个扩展的接口。
(3)自动资源释放:PHP4增加了引用计数功能,这种新技术的引入使PHP4具有了自动内存管理功能,减轻了开发人员的负担。
(4)布尔类型:PHP 4.0支持布尔类型。
(5)进程生成:在 UNIX环境下的 PHP 4.0提供了一个很智能和通用的生成进程,使用了一种名为基于automake/libtool的系统生成技术。
(6)COM/DCOM支持:PHP 4.0提供 COM/DCOM支持(仅用于Windows环境)可以无缝地存取和访问 COM对象。
(7)与PHP 3.0兼容性很好:PHP 4.0是与 PHP 3.0代码向后兼容性接近100%。由于 PHP 4的改进的体系结构,两者有一些细微的差别,但是大多数人将可能永远不可能遇上这种情况。
(8)配置:PHP4重新设计和增强了PHP。ini文件,这使得用PHP。ini来配置PHP显得极为容易,这个文件可以在运行时被Apache(unix系统)或由Windows注册(Windows环境)。
(9)加密支持:PHP4实现了完整的加密,这些加密功能是一个完整的mycrypt库,并且 PHP 4.0支持哈希函数。Blowfish,TripleDES,MD5,并且SHA1也是可使用的一些加密算法。
(10)类型检查:PHP 4.0支持同一操作符用于评类型检查:===( 3等号运算符),为在两个值和其类型之间作检查。例如, 3===3将视为假(类型是不同的),而 3==3(相等判断)将视为真。
(11)FTP支持:PHP 4.0支持 FTP。通常,你会为通过一个调制解调器连接下载一个大文件提供一个接口。然而,如果你确实有需要,可以使用PHP。
(12)PHP4新增函数或功能增强函数:PHP 4.0新增了许多函数,同时也将许多现有的函数功能进行了增强,以下是一些例子。 array_count_values() eval() foreach() nclude() ob_end_clean() ob_end_flush() ob_get_contents() ob_start() strip_tags() unset()
(13)here打印:PHP 4.0的Here打印是与Perl类似的,尽管完全不相同。Here是打印大容量文章的一个有用的方法,例如在 HTML文件中,不会漏掉任何一个字符,例如目录标记。
(14)HTTP Session fallback系统:为 HTTP Session管理的一个 fallback系统在 PHP 4.0被实现。缺省情况下,Session标识符由cookies存储。如果没有cookies支持或一项cookies任务失败,Session标识符自动被创建并在 URL的查询字符串中被携带。
(15)ISAPI支持:PHP 4.0能作为一个个性化的 ISAPI模块作为 IIS插件。这比 PHP 3.0更有效,它作为一个外部的程序来运行。
(16)内存:PHP 4.0能更有效的使用内存,导致较少的内存占用消耗,这主要归功于引用计数技术的实现。
(17)其他类成员函数:在 PHP 4.0你能在成员函数本身的作用域或全局范围内调用其他类的成员函数。例如,你能用一个子函数覆盖父函数,并在子函数中调用父函数。
(18)多维数组:在 PHP 4.0,利用GET,POST, Cookies的进行的数据传输支持多维数组。
(19)个性化的 HTTP Session支持:HTTP Session处理,包括 fallback系统管理,在 PHP 4.0被它的新库函数实现。在版本 3.0中处理Session要求使用 PHPLIB和第三方的库函数,它比把Session直接地由 PHP支持慢了许多。
(20)个性化的 Java支持:PHP 4.0支持和java的交互。这种个性化的Java支持为PHP在 Java对象上创建和使用方法提供一个简单并且有效的工具。
21)对象和数嵌套组:PHP 4.0实现了功能更加强大的对象,移去了 PHP 3.0存在的种种句法限制。对象能在数组以内被嵌套并且反过来也如此,可以根据你的需要实现嵌套。
(22)面向对象的编程:PHP 4.0为面向对象的编程和构造类及对象提供扩展的功能和新特征。PHP4实现了对象重载,引用技术等新技术。
(23)对象重载支持:对象重载语法允许第三方的基于面向对象的类库使用 PHP4的面向对象的特征存取他们自身的功能。使用这个特征的一个 COM模块已经被实现了。
(24)输出缓冲支持:PHP提供了一个输出缓冲函数集合。输出缓冲支持允许你写包裹函数功能压缩缓冲区。在 PHP4的输出缓冲支持允许 HTML头信息存放,无论 HTML的正文是否输出。头信息((header(), content type, and cookies)不采用缓冲。
(25)增加了PCRE库:PHP 4.0包括一个 Perl兼容的正则表达式(PCRE)库,和正常regex库一起与 PHP绑定。split和replace PCRE功能被支持。PCRE和 Perl正规表达式之间有一些细微差别。
(26)PHP.ini文件:PHP.ini文件在 PHP4.0被重新设计,使用的 PHP的配置PHP.ini是更容易并且更有效的。全部文件能被Apache在运行时间操作(在 Apache环境下)或由 Windows注册表(在 Windows下面)。被加入PHP.ini文件的配置指令自动地在所有相关的模块中被支持。
(27)引用计数:PHP 4.0为系统中的每个数值提供了引用计数,包括资源。一旦一个资源不再被任何变量引用,它自动地被释放以节省内存资源。利用这个特征的最明显的例子一个内置SQL查询的循环语句。在PHP 3.0中,每次递归另外的 SQL结果集合重复申请内存,直到脚本执行完毕,这些结果集合占用的内存才被释放。
(28)支持引用:通过引用可以改变一个变量的值。
(29)函数的运行时绑定:PHP 4.0的运行时间绑定功能允许你在他们被声明以前调用,无论声明是否在代码以后或是在运行时间。
(30)类的运行时信息:PHP 4.0支持在运行时刻存取下列类信息:一个对象的类名,一个对象的父类的类名字,以及对象函数所在的名字。
(31)服务器抽象层:为支持Web服务器提供了增强型 SAPI(服务器 API)接口,是 PHP 4。0不可分的一部分。这个服务器抽象层,提供了通用的WEB服务器接口支持,支持多线程WEB服务器,为大多数的WEB服务器提供透明的支持,这些服务器包括 Apache,IIS( ISAPI),以及 AOL服务器。
二、php函数名前面加@是啥意思
1、@运算符只对表达式有效。对新手来说一个简单的规则就是:如果能从某处得到值,就能在它前面加上@运算符。例如,可以把它放在变量,函数和 include()调用,常量,等等之前。不能把它放在函数或类的定义之前,也不能用于条件结构例如 if和 foreach等。
2、目前的“@”错误控制运算符前缀甚至使导致脚本终止的严重错误的错误报告也失效。这意味着如果在某个不存在或类型错误的函数调用前用了“@”来抑制错误信息,那脚本会没有任何迹象显示原因而死在那里。
三、php高级教程
导语:php是it行业语言,也是一门较热的网络技术,下面就由我为大家介绍一下php高级教程,欢迎大家阅读!
$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个!
date()函数的格式参数是必需的,它们规定如何格式化日期或时间。
下面列出了一些常用于日期的字符:
·d-表示月里的某天(01-31) D-表示当前这天的英文星期简写
·m-表示月(01-12) M-表示当前月的英文缩写
·Y-表示年(四位数) y-表示年(后两位数)
其他字符,比如"/","."或"-"也可被插入字符中,以增加其他格式。
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小时格式
·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
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年
$d2=ceil(($d1-time())/60/60/24);
echo"距离十二月三十一日还有:".$d2."天。";
cookie常用于识别用户。cookie是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 PHP,您能够创建并取回 cookie的值。
setcookie()函数用于设置 cookie。
setcookie(name, value, expire, path, domain);
在下面的例子中,我们将创建名为"user"的 cookie,把为它赋值"Alex Porter"。我们也规定了此 cookie在一小时后过期:
setcookie("user","Alex Porter", time()+3600);
注释:在发送 cookie时,cookie的值会自动进行 URL编码,在取回时进行自动解码(为防止 URL编码,请使用setrawcookie()取而代之)。
PHP的$_COOKIE变量用于取回cookie的值。
删除 cookie当删除 cookie时,您应当使过期日期变更为过去的时间点。
// set the expiration date to one hour ago
setcookie("user","", time()-3600);
如果浏览器不支持 cookie该怎么办?
如果您的应用程序涉及不支持cookie的浏览器,就不得不采取其他方法在应用程序中从一张页面向另一张页面传递信息。一种方式是从表单传递数据(有关表单和用户输入的内容,稍早前我们已经在本教程中介绍过了)。
下面的表单在用户单击提交按钮时向"welcome.php"提交了用户输入:
取回"welcome.php"中的值,就像这样:
当您运行一个应用程序时,您会打开它,做些更改,然后关闭它。这很像一次会话。计算机清楚你是谁。它知道你何时启动应用程序,并在何时终止。但是在因特网上,存在一个问题:服务器不知道你是谁以及你做什么,这是由于 HTTP地址不能维持状态。
通过在服务器上存储用户信息以便随后使用,PHP session解决了这个问题(比如用户名称、购买商品等)。不过,会话信息是临时的,在用户离开网站后将被删除。如果您需要永久储存信息,可以把数据存储在数据库中。
Session的工作机制是:为每个访问者创建一个唯一的 id(UID),并基于这个 UID来存储变量。UID存储在cookie中,亦或通过 URL进行传导。
在您把用户信息存储到 PHPsession中之前,首先必须启动会话。
注释:session_start()函数必须位于
上面的代码会向服务器注册用户的会话,以便您可以开始保存用户信息,同时会为用户会话分配一个 UID。
存储和取回session变量的正确方法是使用 PHP$_SESSION变量:
echo"Pageviews=".$_SESSION['views'];
在下面的例子中,我们创建了一个简单的 page-view计数器。isset()函数检测是否已设置"views"变量。如果已设置"views"变量,我们累加计数器。如果"views"不存在,则我们创建"views"变量,并把它设置为 1:
if(isset($_SESSION['views']))
$_SESSION['views']=$_SESSION['views']+1;
echo"Views=".$_SESSION['views'];
如果您希望删除某些session数据,可以使用 unset()或 session_destroy()函数。
unset()函数用于释放指定的 session变量:
unset($_SESSION['views']);
您也可以通过session_destroy()函数彻底终结 session:
注释:session_destroy()将重置 session,您将失去所有已存储的session数据。
为了避免用户获得类似上面的错误消息,我们在访问文件之前检测该文件是否存在:
if(!file_exists("welcome.txt"))
$file=fopen("welcome.txt","r");
假如文件不存在,您会得到类似这样的错误消息:
比起之前的代码,上面的代码更有效,这是由于它采用了一个简单的错误处理机制在错误之后终止了脚本。
不过,简单地终止脚本并不总是恰当的方式。让我们研究一下用于处理错误的备选的 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)
现在,我们已经创建了一个错误处理函数,我们需要确定在何时触发该函数。
PHP的默认错误处理程序是内建的错误处理程序。我们打算把上面的函数改造为脚本运行期间的默认错误处理程序。
可以修改错误处理程序,使其仅应用到某些错误,这样脚本就可以不同的方式来处理不同的错误。不过,在本例中,我们打算针对所有错误来使用我们的自定义错误处理程序:
set_error_handler("customError");
由于我们希望我们的自定义函数来处理所有错误,set_error_handler()仅需要一个参数,可以添加第二个参数来规定错误级别。
function customError($errno,$errstr)
set_error_handler("customError");
·E_USER_ERROR-致命的用户生成的run-time错误。错误无法恢复。脚本执行被中断。
·E_USER_WARNING-非致命的用户生成的run-time警告。脚本执行不被中断。
·E_USER_NOTICE-默认。用户生成的`run-time通知。脚本发现了可能的错误,也有可能在脚本运行正常时发生。
在本例中,如果"test"变量大于"1",则发生E_USER_WARNING错误。如果发生了 E_USER_WARNING,我们将使用我们的自定义错误处理程序并结束脚本:
function customError($errno,$errstr)
set_error_handler("customError",E_USER_WARNING);
trigger_error("Value must be 1 or below",E_USER_WARNING);
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");
异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程。这种情况称为异常。
·代码执行被切换到预定义的异常处理器函数
·根据情况,处理器也许会从保存的代码状态重新开始执行代码,终止脚本执行,或从代码中另外的位置继续执行脚本
我们将展示不同的错误处理方法:
要避免上面例子出现的错误,我们需要创建适当的代码来处理异常。
1.Try-使用异常的函数应该位于"try"代码块内。如果没有触发异常,则代码将照常继续执行。但是如果异常被触发,会抛出一个异常。
2.Throw-这里规定如何触发异常。每一个"throw"必须对应至少一个"catch"
3.Catch-"catch"代码块会捕获异常,并创建一个包含异常信息的对象
throw new Exception("Value must be 1 or below");
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';
echo'Message:'.$e->getMessage();
上面代码将获得类似这样一个错误:
Message: Value must be 1 or below
创建自定义的异常处理程序非常简单。我们简单地创建了一个专门的类,当 PHP中发生异常时,可调用其函数。该类必须是 exception类的一个扩展。
这个自定义的exception类继承了 PHP的 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';
$email="someone@example...com";
if(filter_var($email, FILTER_VALIDATE_EMAIL)=== FALSE)
//throw exception if email is not valid
throw new customException($email);
这个新的类是旧的exception类的副本,外加 errorMessage()函数。正因为它是旧类的副本,因此它从旧类继承了属性和方法,我们可以使用 exception类的方法,比如 getLine()、getFile()以及 getMessage()。
可以为一段脚本使用多个异常,来检测多种情况。
可以使用多个if..else代码块,或一个 switch代码块,或者嵌套多个异常。这些异常能够使用不同的 exception类,并返回不同的错误消息: