Home >php教程 >php手册 >php5概念总结之一

php5概念总结之一

WBOY
WBOYOriginal
2016-06-06 19:50:481075browse

/***********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;

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn