/*================一、OOP的基本概念======================================*/
/*
* 1、类的声明
*/
class ClassName{
//字段声明
//方法声明
}
/*
* 1)创建一个员工类
*/
class Employee{
private $age;
private $sex;
protected $wage;
protected function checkAge(){
if($this->age<30){
echo "你的年龄小于30";
}
}
protected function checkMoney(){
if(5000<$this->wage<10000){
echo "您的工资处于中等水平";
}
}
}
/*
* 2)类的实例化(对象/实例)
* 实例化后的对象具有类的所有性质和行为即属性和方法。
*/
$employee = new Employee();
/*
* 2.字段
* 1)字段的声明及作用域
*/
class Emple{
private $age;
private $sex;
/*
* 字段的声明命名规则同变量命名规则相似,PHP中字段支持5中作用域private、protected、public、
* final、static,OOP语言中并不鼓励使用public 声明字段。
* a)private:只能在定义字段的类中访问;私有字段只能通过公共接口来访问,也就是封装的思想,从而包含私有变量的值。
* b)protected:在继承的子类中可以访问和操作保护字段
* c)public:可直接访问字段
* d)final:标记为final的属性或方法可以访问被子类所覆盖
* e)static:
*/
}
/*
* 3.属性
* 1)设置属性:
* __set(propName,propValue):成功执行返回true,否则false
* a)负责隐藏字段的赋值实现,并在为类字段赋值之前验证类字段数据;
* b)用来扩展类,使之增加新的属性;
* 2)获取属性:
* __get(propName);成功执行返回true,否则false
*
* 3)自定义获取属性和设置属性方法:
* 可以为每个私有属性创建两个方法set()和get()方法,类似java和c++中的私有属性的封装。
*/
/*
* 4.常量
* 即表示不会改变的值,对于从改类实例化的任何对象来说,常量值在这些对象的生命周期中都保持不变。
* 1)常量定义:const PI='jjzuo';一般变量名字母全大写
* 2)常量访问:
* class Company{
* const PI="3.14";
* }
* echo Company::PI;
* $company=new Company();
* echo $company::PI;
*/
/*
* 5.方法
* 方法即类的行为
* 1)方法的声明
* scope function fnName(){}
* 2)方法的调用
* 即实例化的对象调用方法$employee->fnName();
* 3)方法的作用域
* 有6中作用域:private、protected、public、abstract、final、static,现在主要说说abstract作用域
* a)private:只能类内部使用,不能通过实例化对象调用或者子类调用
* b)protected:只能在该类即子类中调用
* c)public:公共方法
* d)abstract:抽象方法只在父类中声明,但是在子类中实现该方法(行为),只有声明为abstract类即抽象类中才能声明抽象方法
* 同时一个接口中的方法都是抽象方法。
* abstract class Home{
* abstract function hire(){};
* abstract funciton getPerson(){};
* ...
* }
* e)final:final方法可以防止被子类所覆盖;
* f)static:
* 4)类型提示
* PHP5的新特性,可以确保传递给方法的对象确实是所期望的的实例;
* 类型提示之适用于对象,而不适用于整数、字符串等类型提示;
*
*/
/*================二、构造函数和析构函数======================================*/
/*
* 1.构造函数
* 如果希望在实例化对象的时候对某些字段初始化或者执行某些函数,可以使用构造函数;
* 构造函数定义为对象实例化时自动执行的一段代码;
* 1)OOP构造函数的优点:
* a)可以接受参数,能够在创建对象时赋给特定的对象字段;
* b)构造函数可以调用类方法或者其他函数;
* c)类的构造函数可以调用其他构造函数,包括调用父类的构造函数;
* 2)构造函数的声明:
* function __construct([可选参数]){
*
* }
* 如果确保某些方法只能通过构造函数来调用,可以将方法声明为private,从而使对象和子类无法调用此方法。
*
* 3)构造函数的调用
* a)调用父类的构造函数:PHP和java不同,它不会自动调用父类的构造函数,必须用parent关键字显示的调用
* class Emplyee{
* function __construct(){
*
* }
* }
* class Manager extends Employee{
* function __construct(){
* parent::__construct();
* ...
* }
* }
* b)调用与实例化对象无关类的构造函数:
* class Staff{
* function __construct(){
*
* }
* }
* class Manager{
* function __construct(){
* Staff::__construct();//调用Staff类的构造函数
* ...
* }
* }
* 2.析构函数
* 当在对象撤销时需要撤销内存中的数据时,可以定制一个析构函数
* 析构函数的声明:
* function __destruct([可选参数]){
*
* }
*
*/
/*===============三、静态类成员======================================*/
/*
* 当有必要创建共所有实例化对象共享的字段和方法是,这写字段和方法与所有的类实例有关,
* 但不能由任何特定对象调用。
* a)声明方式:
* 字段:private static $name;
* 方法: static function fnName(){};
* b)调用方式:
* 字段: self::name
* 方法:ClassName::fnName();
*/
/*================四、instanceof关键字======================================*/
/*
* 此关键字是PHP5.0的一个新成员,使用此关键字可以判断一个对象是类的实例、类的子类、还是实现了某个
* 特定接口,并进行某些特定操作。
* $manager=new Manager();
* if($manager instanceof Manager){
* echo 'yes';
* }
* PS:a)类名Manager没有任何定界符;b)可以使用case语句对不同的类进行实例化判断。
*/
/*================五、辅助函数===========================================*/
/*
* 1.确定类是否存在
* class_exists(string ClassName);
* 2.确定上下文
* get_class(Object object);返回对象所属的类名,无则返回false
* 3.了解类方式
* get_class_methods(mixed ClassName);返回类中定义所有方法名称数组
* 4.了解类字段
* get_class_vars(string ClassName);返回字段名和值组成的关联数组
* 5.了解声明类
* get_declared_classes();返回当前执行 脚本中所有类名称组成的数组
* 6.了解对象字段
* get_object_vars(Object object);返回对象定义字段和对于值组成的关联数组
* 7.确定对象的父类
* get_parent_class(mixed object);返回object所属类的父类名
* 8.确定接口是否存在
* interface_exists(string InterfaceName);存在返回true,否则false
* 9.确定对象类型
* is_a(Object object,string ClassName);
* 10.确定对象子类类型
* is_subclass_of(Object object,string ClassName);
* 11.确定方法是否存在
* method_exists(Object object,string methodName);
*
*/
/*================六、自动加载对象===========================================*/
/*
* PHP5.0中开始引入自动加载对象的概念
* 通过定义__autoload
* function __autoload($class[类名]){
* require_once("文件夹名称/$class.class.php");
* }
*/
PHP学习系列之OOP概念
最新推荐文章于 2024-06-03 14:33:33 发布