PHP面向对象一

概念:面向对象(英语:Object-oriented programming,缩写:OOP),是一种基于面向过程的开发思想。与面向过程强调分解事物步骤相似,面向对象更需要追求事务操作的’主题‘,也就是’对象‘

面向过程编程本质上的‘谁’都是‘我’,但实际业务是有不同的‘谁来完成’,面向对象就是要解决这个操作主题的问题,先写好函数功能,然后再放到某个主体中

面向对象编程时一种编程思想,不是具体技术,在面向对象思维中,任何动作的执行,任何动作的执行或者数据都属于对象(一切皆对象)

面向对象关键词说明

类:class,是定义面向对象主题的最外层结构,用来包裹主题的数据和功能(函数),类是一类具有共性事务的代表,代表的事务的共性

对象:object,某类事务的具体代表,也是实际数据和功能操作的具体单元,也称之为(instanse)

实例化:new,从一个抽象的概念得到一个符合抽象概念的具体实例的过程

类成员:member,指类class结构中创建的函数,也称之为成员方法或者成员函数

方法:method,本质是在class结构中创建的函数,也称之为成员方法或者成员函数

属性:property,本质是在类class结构中创建的变量,也称之为成员变量

常量类:constant,本质是在类class结构中创建的常量

面向对象简单实现

定义:利用面向对象提供的关键字和代码规范来进行编程,核心就是class和object

语法:

<?php
    //定义一个类class关键字
    class A{
}
?>

类calss是一种结构,没有语法错误的情况下,代码不会执行(与函数一样),也无法打印输出

明明规范和变量一样,通常类名首字母大写方便区分

类是无法访问的,需要得到具体的对象才能访问,可以通过(实例化)new来实现对象的创建:new类名[()],小括号加不加都可以

<?php
    //定义类class关键字
    class Nothing{

    }

    class MyClass{      //首字母大写,后用驼峰 法

    }

    //实例化对象
    // var_dump(new Nothing).'<br>';
    // var_dump(new MyClass());

    //使用变量保存对象
    $n = new Nothing;
    $m = new MyClass;
    var_dump($n,$m);
?>

类成员(属性)

类成员就是指直接定义在类结构{}内部的一级成员,即直接依赖{}的成员,在PHP中类成员有三种:成员变量(属性),成员方法(成员函数),类常量

成员变量:就是在类结构{}下直接定义的变量,但与定义普通变量的方法不同,需要在变量名前面使用一个关键字public,语法:public 变量名字 = 值,成员变量可以赋值也可能不赋值

成员变量的访问必须通过对象才能进行,也就是要new 一个对象,然后才能对属性进行增删改查

语法$对象名->属性名

<?php
    //使用关键词class定义类
    class Buyer{
        //定义成员变量,保存数据
        //需要用关键字public定义
        public $name;       //定义属性(成员变量不赋值)
        public $money =10;      //定义属性(成员变量赋值)
    }
    //对象保存到堆区
    $b = new Buyer;
    //访问属性
    echo $b->name;
    echo $b->money.'<br>';
    //修改属性
    $b->money = 1000;
    //删除属性
    unset($b->name);
    //增加属性
    $b->age = 20;
    echo $b->age.'<br>';
    echo $b->money;

?>

对象一旦产生,可以自主对属性进行操作;可以新增(无限属性)

成员函数(方法)

就是定义在{}结构下的函数,函数内部的内容与原来的函数结构一样,可以有分支,循环等

<?php
    //定义类

use Buyer as GlobalBuyer;

    class Buyer{
        function display(){
            echo __CLASS__;         //魔术常量输出当前类名
        }
    }
    $a = new Buyer; 
    $a->display();
?>

类常量

<?php
    class A{
    const PI =3.14;        //const 常量名 = 值,不能用define
}
?>

属性必须写修饰限定符,方法可以省去不写,默认public

public共有类,即表示所修饰的内容(属性或方法)可以在当前类内部访问,也可以在类的外部访问

protected:受保护,即表示修饰的内容只能在类内部访问

private:私有属性,不能在当前类的外部访问,只能在自己的类内部访问

类内部对象

类成员(对象)的属性和方法的访问必须通过对象才能访问,类外部通过实例化new对象从而实现对象的访问,但类内部不能访问类外部的对象,此时类的内部就内置了一个对象$this代表访问对象$this是内置对象,谁调用属性,$this就指向谁

<?php
    //定义类
    class Saler{
        //定义属性
        public $count = 100;
        protected $discount = 0.8;
        private $money = 100;

        //定义方法
        public function getaAll(){
            // 内部访问
            // global $s;  //把全局的变量引入局部
            // echo $s->count,$s->discount,$s->money;      

            //使用内置对象$this
            echo $this->count,$this->discount,$this->money; 

        }

    }
    $s = new Saler;
    $s->getaAll()   //调用方法
?>

$this,class,new之间的关系原理

class是定义类,属于非执行代码段,会被加载到代码段

new是实例化对象,先判定类在内存中是否存在,不存在报错,不能实例化内存中不存在的类

$this是系统在方法中内置对象的通用名字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值