面向对象(Object Oriented Programming,OOP)
面向对象编程面对的是一个个对象,这些对象帮我们把一个个事情做完
面向对象编程从“类”开始
每个类的定义都以关键字class开头,空格后面跟着类名,后面再跟着一对花括号
类名称规则:用大驼峰命名法(首字母也大写)
类成员:定义类的那个大括号里可以是常量、属性(又叫“变量”)、方法(函数)
class Humanity{ };
class Room{ };
1)属性(变量)
声明属性时必须用一个关键字指明其可见性(public、protected、private三选一开头)
变量名采用小驼峰命名法
class Humanity{
public $name;
public $sex;
public $iq;
}
2)常量(常量名全部大写)
const 常量名称 =常量值;
class Humanity{
public $name;
public $sex;
public $grade;
const BIRTHPLACE='earth';
}
3)方法(函数)
类中定义的函数与类外相同,可以接受参数、有返回值等
变量和常量声明应该放在方法前面
方法前面也可以设置可见性(public、protected、private、省略 四选一 ,默认不写则是public)
方法名建议用小驼峰命名法
class Humanity{
public $name;
const BIRTHPLACE='earth';
public function eatHello($food){
echo "正在吃{$food}";
}
}
对象
创建对象:new 对应的类名称( ); 如,new Humanity( ); (叫做该类的对象,也就是一个实际例子)
我们把这个对象保存在一个变量里:$object=new 对应的类名( );
1)对象运算符(->)
使用 ->可以访问或设置 非静态属性 或者 调用方法
默认我们类里面设置的变量都是非静态属性(类常量除外)
访问非静态属性的时候无需变量开头的$
<?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('荔枝');
2)$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;
/* 对象是一种复合数据类型,像数组那样 */