php面向对象编程介绍

版权声明:转载请附上文章地址 https://blog.csdn.net/weixin_38134491/article/details/86744173

面向对象(Object  Oriented Programming,OOP)

面向对象编程面对的是一个个对象,这些对象帮我们把一个个事情做完

面向对象编程从“类”开始

每个类的定义都以关键字class开头,空格后面跟着类名,后面再跟着一对花括号

class Humanity( );

class Room( );

类名称规则

用大驼峰命名法(首字母也大写)

类成员

定义类的那个大括号里可以是常量、变量(又叫“属性”)、函数(方法)

变量(属性)

声明属性时必须用一个关键字指明其可见性(public、protected、private三选一开头)

变量名采用小驼峰命名法

class Humanity{
    public $name;
    public $sex;
    public $iq;
}

常量(常量名全部大写)

const 常量名称 =常量值;

class Humanity{
    public $name;
    public $sex;
    public $grade;
    const BIRTHPLACE='earth';
}

方法(函数)

  • 类中定义的函数与类外相同,可以接受参数、有返回值等
  • 变量和常量声明应该放在方法前面
  • 方法前面也可以设置可见性(public、protected、private、省略 四选一 ,默认不写则是public)
  • 方法名建议用小驼峰命名法
class Humanity{
    public $name;
    const BIRTHPLACE='earth';
    public function eatHello($food){
        echo "正在吃{$food}";
    }
}

对象

  • 创建对象:new 对应的类名称( );  如,new Humanity( );    (叫做该类的对象,也就是一个实际例子)
  • 我们把这个对象保存在一个变量里:$object=new 对应的类名( );

对象运算符(->)

  • 使用 ->可以访问或设置 非静态属性 或者 调用方法
  • 默认我们类里面设置的变量都是非静态属性(类常量除外)
  • 访问非静态属性的时候无需变量开头的$
<?php
header('Content-Type:text/html;charset=utf-8');

class Humanity{
    public $name;
    public $sex;
    public $iq=100;
    const BIRTHPLACE='earth';
    public function eat($food){
        echo "正在吃{$food}";
    }
}

$robin=new Humanity(); /* 创建一个Humanity实例 */
$robin->name='罗宾房'; /* 设置 */
echo $robin->name; /* 输出 */
echo '<br>';
$robin->sex='男';
echo $robin->sex;
echo '<br>';
echo $robin->iq;
echo '<br>';
$robin->eat('苹果'); /* 调用了函数且传了参数 */
echo '<br>';

/* 一个类可以创建无数个对象 */
$mike=new Humanity();
$mike->name='麦克';
$mike->sex='男';
$mike->eat('荔枝');

$this(在类的内部(准确的说是在方法内)访问属性和方法)

$this是一个特殊的变量,一个类的$this变量总是指向该类的当前实例

所以在类的方法内,我们用 $this->属性/方法名

<?php
header('Content-Type:text/html;charset=utf-8');

class Humanity{
    public $name;
    public $sex;
    public $iq=100;
    const BIRTHPLACE='earth';
    public function eat($food){
        echo "<p>{$this->name}正在吃{$food}</p>";
        $this->say("{$food}真好吃!");
    }
    
    public function say($content){
        echo "<p>{$this->name}:{$content}</p>";
    }
}

$robin=new Humanity();
$robin->name='罗宾房';
$robin->eat('菠萝');

$mike=new Humanity();
$mike->name='麦克';
$mike->eat('火龙果');

<?php
class Room{
    public $length;
    public $width;
    public $heignt;
}

$room911=new Room;
$room911->length=10;
$room911->width=10;
$room911->heignt=2.5;

/* 对象是一种复合数据类型,像数组那样 */

猜你喜欢

转载自blog.csdn.net/weixin_38134491/article/details/86744173
今日推荐