requirerequire 和 include 几乎完全一样,除了处理失败的方式不同之外。 require 在出错时产生 E_COMPILE_ERROR 级别的错误,换句话说将导致脚本中止而 include 只产生警告(E_WARNING),脚本会继续运行。includeinclude 语句包含并运行指定文件。以下文档也适用于 require:被包含文件先按参数给出的路径寻找,如果没有给出目录(只有文件名)时则按照 include_path 指定的目录寻找。如果在 include_path ...
继续阅读 >
分类目录归档:全部列表
2014
11-07
11-07
PHP基础之流程控制10——goto语句
(PHP5>=5.3.0)goto 操作符可以用来跳转到程序中的另一位置。该目标位置可以用目标名称加上冒号来标记,而跳转指令是 goto 之后接上目标位置的标记。PHP中的 goto 有一定限制,目标位置只能位于同一个文件和作用域,也就是说无法跳出一个函数或类方法,也无法跳入到另一个函数。也无法跳入到任何循环或者switch结构中。可以跳出循环或者switch,通常的用法是用 goto 代替多层的 break。Example#1 goto 示例...
继续阅读 >
2014
11-07
11-07
PHP基础之数据类型10——类型转换的判别
PHP在变量定义中不需要(或不支持)明确的类型定义;变量类型是根据使用该变量的上下文所决定的。也就是说,如果把一个字符串值赋给变量 $var,$var 就成了一个字符串。如果又把一个整型值赋给 $var,那它就成了一个整数。PHP的自动类型转换的一个例子是加法运算符“+”。如果任何一个操作数是浮点数,则所有的操作数都被当成浮点数,结果也是浮点数。否则操作数会被解释为整数,结果也是整数。注意这并没有改变这些操作数本...
继续阅读 >
2014
11-07
11-07
PHP基础之函数1——用户自定义函数
一个函数可由以下的语法来定义:Example#1展示函数用途的伪代码<?phpfunction foo($arg_1, $arg_2, /* ..., */ $arg_n){ echo "Example function.\n"; return $retval;}?>任何有效的PHP代码都有可能出现在函数内部,甚至包括其它函数和类定义。函数名和PHP中的其它标识符命名规则相同。有效的函数名以字母或下划线打头,后面跟字母,数字或下划线。可以用正则表达式表示为:[a-zA-Z_\x7f-\xf...
继续阅读 >
2014
11-07
11-07
PHP基础之函数2——函数参数
通过参数列表可以传递信息到函数,即以逗号作为分隔符的表达式列表。参数是从左向右求值的。PHP支持按值传递参数(默认),通过引用传递参数以及默认参数。也支持可变长度参数列表,更多信息参见 func_num_args(), func_get_arg() 以及 func_get_args()。Example#1向函数传递数组<?phpfunction takes_array($input) echo "$input[0] + $input[1] = ", $input[0]+$input[1];}?>...
继续阅读 >
2014
11-07
11-07
PHP基础之函数3——函数返回值
值通过使用可选的返回语句返回。可以返回包括数组和对象的任意类型。返回语句会立即中止函数的运行,并且将控制权交回调用该函数的代码行。更多信息见 return。Note:如果省略了 return,则返回值为 NULL。Example#1 return 的使用<?phpfunction square($num){ return $num * $num;}echo square(4); // outputs '16'.?>函数不能返回多个值,但可以通过返回一个数组来得到类似的效果。Example#...
继续阅读 >
2014
11-07
11-07
PHP基础之函数4——可变函数
PHP支持可变函数的概念。这意味着如果一个变量名后有圆括号,PHP将寻找与变量的值同名的函数,并且尝试执行它。可变函数可以用来实现包括回调函数,函数表在内的一些用途。可变函数不能用于例如 echo, print, unset(), isset(), empty(), include, require 以及类似的语言结构。需要使用自己的包装函数来将这些结构用作可变函数。Example#1可变函数示例<?phpfunctionfoo(){echo"Infoo()<br/>\n";}f...
继续阅读 >
2014
11-07
11-07
PHP基础之函数5——内置函数
PHP有很多标准的函数和结构。还有一些函数需要和特定地PHP扩展模块一起编译,否则在使用它们的时候就会得到一个致命的“未定义函数”错误。例如,要使用 image 函数中的 imagecreatetruecolor(),需要在编译PHP的时候加上 GD 的支持。或者,要使用 mysql_connect() 函数,就需要在编译PHP的时候加上 MySQL 支持。有很多核心函数已包含在每个版本的PHP中如字符串和变量函数。调用 phpinfo() 或者 get_loaded_e...
继续阅读 >
2014
11-07
11-07
PHP基础之函数6——匿名函数
匿名函数(Anonymousfunctions),也叫闭包函数(closures),允许临时创建一个没有指定名称的函数。最经常用作回调函数参数的值。当然,也有其它应用的情况。Example#1匿名函数示例<?phpecho preg_replace_callback('~-([a-z])~', function ($match) { return strtoupper($match[1]);}, 'hello-world');// 输出 helloWorld?>闭包函数也可以作为变量的值来使用。PHP会自动把此种表达式转换成内置类 Cl...
继续阅读 >
2014
11-07
11-07
PHP基础之函数7——动态调用函数
call_user_func(PHP4,PHP5)call_user_func — 传入一个参数来调用回调函数说明mixed call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]])Callsthe callback givenbythefirstparameterandpassestheremainingparametersasarguments.参数callbackThe callable tobecalled.parameterZeroormoreparameterstobepassedtothecallback.Note:Note...
继续阅读 >
2014
11-07
11-07
PHP基础之类和对象1——简介及基本概念
一、简介自PHP5起完全重写了对象模型以得到更佳性能和更多特性。这是自PHP4以来的最大变化。PHP5具有完整的对象模型。PHP5中的新特性包括访问控制,抽象类和 final 类与方法,附加的魔术方法,接口,对象复制和类型约束。PHP对待对象的方式与引用和句柄相同,即每个变量都持有对象的引用,而不是整个对象的拷贝。二、基本概念1.class每个类的定义都以关键字 class 开头,后面跟着类名,后面跟着一对花括号,...
继续阅读 >
2014
11-07
11-07
PHP基础之类和对象2——类的属性
类的变量成员叫做“属性”,或者叫“字段”、“特征”,在本文档统一称为“属性”。属性声明是由关键字 public,protected 或者 private 开头,然后跟一个普通的变量声明来组成。属性中的变量可以初始化,但是初始化的值必须是常数,这里的常数是指PHP脚本在编译阶段时就可以得到其值,而不依赖于运行时的信息才能求值。Note:为了向后兼容PHP4,PHP5声明属性依然可以直接使用关键字 var 来替代(或者附加于)public...
继续阅读 >
2014
11-07
11-07
PHP基础之类和对象3——类常量
可以把在类中始终保持不变的值定义为常量。在定义和使用常量的时候不需要使用$符号。常量的值必须是一个定值,不能是变量,类属性,数学运算的结果或函数调用。接口(interface)中也可以定义常量。自PHP5.3.0起,可以用一个变量来动态调用类。但该变量值不能为关键字(如 self,parent 或 static)。Example#1定义和使用一个类常量classMyClass{constconstant=1;functionshowConstant(){echo...
继续阅读 >
2014
11-07
11-07
PHP基础之类和对象4——自动加载对象
很多开发者写面向对象的应用程序时对每个类的定义建立一个PHP源文件。一个很大的烦恼是不得不在每个脚本开头写一个长长的包含文件列表(每个类一个文件)。在PHP5中,不再需要这样了。可以定义一个 __autoload() 函数,它会在试图使用尚未被定义的类时自动调用。通过调用此函数,脚本引擎在PHP出错失败前有了最后一个机会加载所需的类。Tipspl_autoload_register() 提供了一种更加灵活的方式来实现类的自动加载。因此...
继续阅读 >
2014
11-07
11-07
PHP基础之类和对象5——构造函数和析构函数
构造函数 ¶void__construct ([ mixed$args [, $... ]])PHP5允行开发者在一个类中定义一个方法作为构造函数。具有构造函数的类会在每次创建新对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。Note:如果子类中定义了构造函数则不会隐式调用其父类的构造函数。要执行父类的构造函数,需要在子类的构造函数中调用parent::__construct()。如果子类没有定义构造函数则会如同一个普通的类方法一样从父类...
继续阅读 >
对属性或方法的访问控制,是通过在前面添加关键字public(公有),protected(受保护)或private(私有)来实现的。被定义为公有的类成员可以在任何地方被访问。被定义为受保护的类成员则可以被其自身以及其子类和父类访问。被定义为私有的类成员则只能被其定义所在的类访问。一、属性的访问控制类属性必须定义为公有,受保护,私有之一。如果用 var 定义,则被视为公有。Example#1属性声明classMyClass{public$p...
继续阅读 >
2014
11-07
11-07
PHP基础之类和对象7——对象继承
继承已为大家所熟知的一个程序设计特性,PHP的对象模型也使用了继承。继承将会影响到类与类,对象与对象之间的关系。比如,当扩展一个类,子类就会继承父类所有公有的和受保护的方法。除非子类覆盖了父类的方法,被继承的方法都会保留其原有功能。继承对于功能的设计和抽象是非常有用的,而且对于类似的对象增加新功能就无须重新再写这些公用的功能。Note:除非使用了自动加载,否则一个类必须在使用之前被定义。如果一个类扩...
继续阅读 >
2014
11-07
11-07
PHP基础之类和对象8——范围解析操作符(::)
范围解析操作符(也可称作PaamayimNekudotayim)或者更简单地说是一对冒号,可以用于访问静态成员,类常量,还可以用于覆盖类中的属性和方法。当在类定义之外引用到这些项目时,要使用类名。自PHP5.3.0起,可以通过变量来引用类,该变量的值不能是关键字(如 self,parent 和 static)。把PaamayimNekudotayim选作双冒号操作符的名字似乎有些奇怪。然而,这是Zend开发小组在写ZendEngine0.5(被用于PHP3中)...
继续阅读 >
2014
11-07
11-07
PHP基础之类和对象9——static关键字
本页说明了用static关键字来定义静态方法和属性。static也可用于定义静态变量以及后期静态绑定。声明类属性或方法为静态,就可以不实例化类而直接访问。静态属性不能通过一个类已实例化的对象来访问(但静态方法可以)。为了兼容PHP4,如果没有指定访问控制,属性和方法默认为公有。由于静态方法不需要通过对象即可调用,所以伪变量$this在静态方法中不可用。静态属性不可以由对象通过->操作符来访问。用静态方式调...
继续阅读 >
2014
11-07
11-07
PHP基础之类和对象10——抽象类
PHP5支持抽象类和抽象方法。定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;另外,这些方法的访问控制必须和父类中一样(或者更为宽松)。例如某个抽象方法被声明为受保护的,那么子类中实现的方法就应该声明为受...
继续阅读 >
2014
11-07
11-07
PHP基础之类和对象11——对象接口
使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。接口中定义的所有方法都必须是公有,这是接口的特性。实现(implements)要实现一个接口,使用 implements 操作符。类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分隔多个接口的名称...
继续阅读 >
2014
11-07
11-07
PHP基础之类和对象12——Traits专题
自PHP5.4.0起,PHP实现了代码复用的一个方法,称为traits。Traits是一种为类似PHP的单继承语言而准备的代码复用机制。Trait为了减少单继承语言的限制,使开发人员能够自由地在不同层次结构内独立的类中复用方法集。Traits和类组合的语义是定义了一种方式来减少复杂性,避免传统多继承和混入类(Mixin)相关的典型问题。Traits和一个类相似,但仅仅旨在用细粒度和一致的方式来组合功能。Trait不能通过它自身来实例化...
继续阅读 >
2014
11-07
11-07
PHP基础之类和对象13——重载
PHP所提供的"重载"(overloading)是指动态地"创建"类属性和方法。我们是通过魔术方法(magicmethods)来实现的。当调用当前环境下未定义或不可见的类属性或方法时,重载方法会被调用。所有的重载方法都必须被声明为 public。注意:1)这些魔术方法的参数都不能通过引用传递。2)PHP中的"重载"与其它绝大多数面向对象语言不同。传统的"重载"是用于提供多个同名的类方法,但各方法的参数类型和个数不同。属性重载publicvo...
继续阅读 >
2014
11-07
11-07
PHP基础之类和对象14——遍历对象
PHP5提供了一种定义对象的方法使其可以通过单元列表来遍历,例如用 foreach 语句。默认情况下,所有可见属性都将被用于遍历。Example#1简单的对象遍历classMyClass{public$var1=1;public$var2=2;public$var3=3;protected$protected='protectedvar';private$private='privatevar';functioniterateVisible(){echo"MyClass::iterateVisible:<br>";foreach($this...
继续阅读 >