面向对象基础

面向对象的关键字说明

面向对象关键字:基于面向对象开发时,所用到的一些关键字,用来表明一些结构和类型

  • 类:定义面向对象主体的最外层结构,包裹主体的数据和功能,共性事物的代表
  • 对象:是某类事物的具体代表,是实际数据和功能操作的具体单元,也被称之为实例
  • 实例化:new,从一个抽象的概念得到符合抽象概念的具体实例的过程
  • 类成员:member,指类class中的所有内容,类成员有三种
    • 属性:在class中创建的变量
    • 方法:class结构中创建的函数
    • 类常量:const,在class中创建的常量

面向对象简单技术实现

  • class 声名 类
  • 类名:驼峰命名
  • 大括号:只有在大括号里面的东西才是类成员,大括号里面的大括号不算
class name{

}
  • 实例化:产生对象
new 类名;
new 类名();     #较多
  • 对象:一般用变量保存
$object = new classname();

步骤:1,根据需求产生类的结构 2,需要使用时实例化
demo

<?php

class Nothing{

}

$nothing = new Nothing();
var_dump($nothing);

运行结果

类成员

  • 属性和方法需要使用访问修饰限定修饰符,暂时使用public
  • 成员访问:属性和方法都属于对象访问,类常量属于类访问
    • 对象访问属性和方法,使用->
      自己简单写个例子好了
<?php
class Student{
    const STUDENT_NUMBER = 27;
    public $name;
    public $number;
    public $sex;
    public function print(){
        echo __CLASS__;
        #魔术方法,打印类名
    }
}

成员访问方法:必须通过对象访问
属性访问:增删改查

<?php
class Student{
    const STUDENT_NUMBER = 27;
    public $name;
    public $number;
    public $sex;
    public function print(){
        echo "\n".__CLASS__;
        #魔术方法,打印类名
    }
}

$stu = new Student();
#增
$stu -> tall;
$stu -> height = 180;

#删除
unset($stu -> number);

#改
$stu -> name = "Tom";

#查
var_dump($stu -> name);
echo "\n";
var_dump($stu);

运行情况

访问方法

$stu -> print();

打印出来类的名字

通常,我们访问属性,只用改和查就够了

访问修饰限定符

概念
访问修饰限定符:用在属性或者方法前修饰的关键字,是用来控制属性或者方法的访问位置

  • 分类
  • public,公有,类内类外都可
  • protected,受保护,只允许在相关类内部访问
  • private,私有,只允许在定义类内部访问

方法可以没有没有修饰限定符,默认public

类内部对象

概念
$this 方法内部内置的一个对象,会自动指向来调用方法的对象

步骤
1,声明类结构
2,明确私有成员,不限定成员的访问限定修饰符
3,私有成员需要在某种情况下被访问:增加方法,在方法里使用$this访问

直接看代码好了

<?php

class Saler{
    public $count = 100;

    public function getV(){
        echo $count;    //会报错,提示未定义变量
    }
}

$s = new Saler();
$s -> getV();
<?php

class Saler{
    public $count = 100;

    public function getV(){
        var_dump($this);
        echo "<br>" . $this -> count;    
    }
}

$s = new Saler();
$s -> getV();

运行结果

注意,$this对象是在类内部访问的,因此可以访问类的所有的属性和方法,不受访问修饰限定符的限制

thisclassnewclass:new:heap访访访this class和new的关系原理 class:定义类结构,属于非执行段代码,因此会被加载到代码段(编译) new:实例化对象,先判定类在内存里是否存在。不存在报错。若存在,则将类内部的属性复制一份,然后在内存(heap)开辟一块内存空间,将属性放到里面,同时内部有一个指针指向类的内存空间 对象访问属性即访问的是对象空间里存储的部分,对象访问方法是通过内部指针找到类空间中的方法,然后再内存(栈)开辟运行 this:是系统在方法内置的对象通用名字,对象在调用方法的时候,系统会自动找到对象所保存的内存地址(heap)然后把地址赋给this 本质:局部变量