php5概念总结之一
/***********by garcon1986*******************/ 1. $this变量是对当前对象的引用,$this-var; $this-method(); 2. php5中的变量和常量称为property,函数称为method. 声明属性: //invalid public $var = 'hel'.'lo'; public $var2 = EOD hello EOD; public
/***********by garcon1986*******************/
1. $this变量是对当前对象的引用,$this->var; $this->method();
2. php5中的变量和常量称为property,函数称为method.
声明属性:
//invalid
public $var = 'hel'.'lo';
public $var2 =
hello
EOD;
public $var3 = 1+2;
public $var4 = self::StaticMethod();
public $var5 = $myvar;
//valid
public $var6 = myConstant;
public $var7 = array(true, false);
public $var8 =
hello
EOD;
3. 继承(inheritance): 使用extends
class A {
function A(){
}
}
class B extends A {
function B(){
}
}
4. parent:: 访问父类中的方法或属性
5. static属性或方法不需要实例化类就能访问。
self:: 访问本类的静态变量。
实例化的类对象中不能访问静态属性,但是能访问静态方法。
静态属性不能使用->访问。
静态调用非静态方法会发生E_STRICT级别的警告。
例子:
class Foo
{
public static $my_static = 'foo';
public function staticValue() {
return self::$my_static;
}
}
class Bar extends Foo
{
public function fooStatic() {
return parent::$my_static;
}
}
print Foo::$my_static . "/n";
$foo = new Foo();
print $foo->staticValue() . "/n";
print $foo->my_static . "/n"; // Undefined "Property" my_static
print $foo::$my_static . "/n";
$classname = 'Foo';
print $classname::$my_static . "/n"; // As of PHP 5.3.0
print Bar::$my_static . "/n";
$bar = new Bar();
print $bar->fooStatic() . "/n";
?>
6. Define - 定义一个有名字的常量。
define("CONSTANT","hello world");
echo CONSTANT; //输出 hello world
echo Constant; //输出 "Constant" and issues a notice.
define("GREETING", "Hello you.", true);
echo GREETING; // outputs "Hello you."
echo Greeting; // outputs "Hello you."
true会使字母不敏感,false会使字符敏感。默认是字符敏感,即false。
7. defined()用于验证某个常量是否存在。
if(defined('CONSTANT')){
echo CONSTANT; //output "hello world"
}
8. const 用于声明常量;
常量不需要使用$;
常量的值必须是常量表达式,不能是变量,属性,算术表达式,函数等。
如: const constant1 = "test of contant";
9. constant() 用于得到常量的值
define("mx",100);
echo mx;
echo constant("mx");
10. __autoload():
test1:
function __autoload($class_name) {
require_once $class_name . '.php';
}
$obj = new huanhang;
test2:
function __autoload($class_name) {
require_once $class_name . '.php';
}
class huanhang{
function huanghang(){
echo "huanhang sleep";
}
}
$obj = new huanhang();
$obj -> huanghang();
11. __construct
__construct 构造方法,当一个对象创建时调用此方法,使用此方法的好处是:可以使构造方法有一个独一无二的名称,无论它所在的类的名称
是什么.这样你在改变类的名称时,就不需要改变构造方法的名称
__destruct 析构方法,PHP将在对象被销毁前(即从内存中清除前)调用这个方法
12. abstract: PHP5中推出了抽象类和抽象方法。
抽象类不能被实例化。
任何类包含了一个以上的抽象方法,这个类也必须声明为抽象类。
继承抽象类时,父类中所有的抽象方法必须在子类中定义;而且这些方法的可见性必须跟父类的方法保持一致或者更少的限制。如:父类的方
法是protected,子类的方法就得是protected或public。
13. interface :
接口通过interface关键字定义,但是其中的方法不需要定义内容。
接口中所有的方法必须为public
所有的方法必须在类中实现implemented,否则会产生严重错误。
一个类不能实现两个接口,因为会造成混淆。
interface也能通过extends被继承
14. visibility可见性
类的属性有public,protected,private. 通过var定义等同于public
类的方法有public,protected,private. 默认是public
15. overloading重载:指动态的创建类属性和方法。通过魔术函数实现。
所有的重载方法都必须被声明为public。
PHP5提供了一种迭代(iteration)对象的功能,就像使用数组那样,可以通过foreach 来遍历对象中的属性。默认情况下,在外部迭代只能
得到外部可见的属性的值。
16. design pattern 设计模式
工厂模式(factory)允许你在代码执行时实例化对象。
单例模式(singleton)用于为一个类生成一个唯一的对象.最常用的地方是数据库连接。
17. 魔术方法(magic method)
__construct, __destruct (参看 构造方法和析构方法), __call, __callStatic, __get, __set, __isset, __unset (参看 重载),
__sleep, __wakeup, __toString, __set_state 和 __clone 等方法在PHP中被称为“魔术方法”(Magic methods)。
PHP把所有以__(两个下划线)开头的类方法当成魔术方法。所以你定义自己的类方法时,不要以 __为前缀。
18. Final
如果父类中的方法被声明为final,则子类无法覆盖该方法;
如果一个类被声明为final,则不能被继承。
19. clone
$copy_of_object = clone $object;