php初学之面向对象

面向对象-就是面向一个个包含了若干个方法的类,

一、类与对象

 

类可以看做是一个人的模板,是一个机器人,这个机器人有一些固定的属性,比如年龄,体重等,也可以没有,可以根据属性做很多事情,比如哭、笑,也可以不根据属性就做某些事情,比如吃、拉。。。或者根据一些别的指令(形参)干活,这个过程就是创建类,这个时候,我需要一个机器人去帮我干活,我就根据不同的模板,创造了一个有名字的机器人,这个机器人就具有唯一性了,这个过程就是生成对象,然后,当然就是让他根据模板里的设置去干活了

 

1、生成对象;

 

       $对象名=new 类名();

$对象名,这个值其实并不是对象,它只是一个变量,等于是对象把值赋值给了这个变量

 

2、类;

1属性;就是变量,其值不能是表达式(1+2)的值,不能是函数的返回值,意思是,他的值虽然是变量,但是他不能进行计算,你可以告诉他1是1,但是不能和他说2-1是你的值,人家直接不跟你玩了,直接报错

2功能;就是方法,函数,与外部的函数可以重名,不冲突(最好不要。。)

 

声明语法;

                     class 类名{

                变量(可以没有);

                            方法;

}

 

 

访问对象里的数据;$对象名->变量或方法();

 

注意,对象名、类名和方法名避免使用关键字,系统函数名等

 

方法里调用方法内部的另一个方法,要使用this-> 注明,否则,它会先检查方法外部有没有这个名字的方法

 

二、构造函数;__construct();(注意;前面是两个下划线)

 

class lei{

 

        public function  __construct(){

        }

       变量;

       函数;

}

 

1、  作用,当new这个类,产生一个对象的时候,就会自动对这个新new出来的对象发挥作用,意思是,他会自动执行__construct这个函数里的代码

 

2、  构造函数;对象产生的时候,自动执行

 

class lei{

 

           //设置形参,接收外部传进的参数

            public function  __construct($name,$sex){

              //用形参对这个构造函数外,类里的变量进行赋值

              $this->name=$name;

              $this->sex=$sex;

           }

           //类里的变量,后面的函数方法会调用

           public $name=null;

           public $sex=null;

   

}

//生成一个对象,并穿进去实参

$a=new lei('飞哥','');

//具体的操作(一般是执行变量后的方法)

echo $a->name;

 

这个构造函数的作用就是接收参数,并赋值给类里的变量,相当于一个连接器

 

3、  析构函数;__destruct().对象销毁的时候,自动执行

 

class lei{

 

           public function  __construct($name,$sex){

              $this->name=$name;

              $this->sex=$sex;

           }

   

           public function __destruct(){

   

           }

           public $name=null;

           public $sex=null;

   

}

$a=new lei('飞哥','');

echo $a->name;

 

如何销毁;

1、  主动销毁;显示的销毁unset,赋值为空(也可以赋别的值),如;

unset($a);

$a=NULL;

 

2、  被动销毁;php是脚本语言,在代码执行到最后一行时,所有申请的内存都要释放掉,自然,对象的那段内存也要释放,这是,对象被销毁了,

 

三、this;当一个对象调用其内部方法时,在方法执行前,先完成一个绑定,绑定到调用次方法的对象

方法内,存取对象的属性时,必须用$this,

 

四、封装;和安卓基本一样

 

1、属性封装;通过权限修饰符,把某些属性封装在一个类的内部,并通过指定的公共接口来访问

    定义;

       class Constants{

           const name  ="fei";

           const sex  ="nan";

   

访问;

CField::name;

 

   2、调用某个公共方法时,改公共方法可能调用在内部的多个方法,但是调用者不需要指定内部的调用过程

 

五、继承、有一些必要的流程,是每个页面都需要的,这个时候,把这些流程写到一个类里,然后继承这个类,然后根据具体的情况,增添或修改这个类,就可以自动执行,

 

调用父类的属性方法;parent::属性名或方法名();

 

父类里有的,可以继承过来直接用,也可以修改/覆盖后使用,

父类没有的,可以自己添加

 

继承时,权限只能越来越宽松

 

构造方法也可以继承

父类有构造函数,子类也有自己的构造函数,第一步要先声明一下,

public function __construct() {

        parent::__construct;

    //然后再写自己要写的东西

}

 

六、多态、和Java类似

七、单例

 

class single {//创建单例类

    static protected $ins=null;//创建一个变量

    final protected function __construct() {//构造函数,  final这个方法不能修改

       //这里写你想干的事

    }

    static public function getInstance() {//static修饰的可以不new直接调

       //判断这个变量还是不是原来的变量,也就是看看这个方法执行过没有,

       if (self::$insinstanceof self) {

           return self::$ins;//不是原来的值了,说明这个变量里的值已经是一个创建的实例了

       }

       self::$ins=new self();//创建一个实例赋值给变量

       return self::$ins;

    }

}

 

$make=single::getInstance();//调用

 

 

八、重写重载

 

1、重写、指子类重写了父类的同名方法,覆盖了父类的那个方法

2、重载、指存在多个同名的方法,但是参数的类型或个数不同,传不同的参数就会调用不同的方法,因为在php中不允许存在同名的方法,所以重载在php中不存在,但是可以做到类似的效果

class aa{
public function bb(){
$res=func_get_args();//func_get_args()这玩意可以计算传进来的是几个参数
if ($res==1) {//对参数的的个数进行判断,
....;//根据参数的个数,调用不同的方法
}
}
}
$li=new aa();
$li->bb(....);//这里的参数可以多个





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值