PHP 类与对象
一、第一个类:
class People{
//创建类
*****类名可以包括字母、数字和下划线的任何组合,但是不能以数字开头
}
实例化:
$people = new People();
二、属性:
在类的主体中可以声明叫做属性的特殊变量。
<?php
class People{
public $name = '张三';
public $age = '18';
}
$people = new People();
echo'<pre>';
print_r($people);
echo'<pre>';
?>
输出结果:
People Object
(
[name] => 张三
[age] => 18
)
可以使用对象操作符 "->" 来访问公共对象属性 $people-> name: 求people对象的name属性
例子:
<?php
class People{
public $name = '张三';
public $age = '18';
}
$people1 = new People(); // 实例化一个people1对象
$people2 = new People(); // 实例化一个people2对象
$people1->name ='小乔'; // 给people1 对象的name属性赋值
$people1->age = 26;//给people1 对象的age属性赋值
$people2->name ='张飞';
$people2->age = 40;
echo'<pre>'; // 按照原格式输出
print_r($people1);
print_r($people2);
echo'<pre>';
?>
输出结果:
People Object(
[name] => 小乔
[age] => 26
)
People Object(
[name] => 张飞
[age] => 40
)
三、方法
<?php
class People{
public $name = '张三';
public $age = '18';
function intro(){
return "我的名字是:{$this->name},今年{$this->age}岁了。";
}
}
$people = new People();
echo'<pre>';
print_r($people -> intro());
echo'<pre>';
?>
输出结果:
我的名字是:张三,今年18岁了。
四、构造函数
php和java一样,在实例化对象的时候调用构造函数,对象的所有基本设置代码都放在构造函数中 ,但是php的构造函数名一定要是“__construct” 开头是两个下划线
<?php
class People{
private $name='';
private $age =0;
function __construct($name,$age){
$this->name=$name;// 赋值运算
$this->age =$age;
}
function intro(){
return "我的名字是:{$this->name},今年{$this->age}岁了。";
}
}
$people = new People('sss',26);
echo'<pre>';
print_r($people->intro());
echo'<pre>';
?>
输出结果:
我的名字是:sss,今年26岁了。
五、 private public protected 作用域
<?php
class People{
private $name='';
private $age =0;
function __construct($name,$age){
$this->name=$name;
$this->age =$age;
}
function intro(){
return "我的名字是:{$this->name},今年{$this->age}岁了。";
}
function get_name()
{ //添加方法
return $this->name; //返回姓名
}
private function get_age(){ //添加方法
return $this->age; // 返回年龄
}
$people = new People('和氏璧',26);
echo'<pre>';
print_r($people->get_name()); // 调用get_name方法
echo'<pre>';
?>
输出结果:和氏璧
六、在类上下文进行操作:
到目前为止,所看到的方法和属性都在对象上下文中进行操作。即是必须使用对象实例$people,通过$this伪变量或是标准变量中存储的对象引用来访问方法和属性
有时候,可能发现通过类(People)而不是对象实例来访问属性和方法更有用
这种类成员叫做静态成员
<?php
class People{
private static $number = 10;//private静态变量
public static function get_number(){//public 静态方法
return self:: $number;//返回number数值
}
}
echo'<pre>';
print_r(People::get_number());
echo'<pre>';
?>
输出结果: 10
const === 关键字声明类常量
七、继承
继承是面向对象的重要特点之一,它可以实现对类的复用
一个类只能继承一个父类,但是一个父类可以被多个子类所继承 ,继承的关键字extends
例子:
<?php
class People{
private $name='';
private $age =0;
function __construct($name,$age){
$this->name=$name;
$this->age =$age;
}
function intro(){
return "我的名字是:{$this->name},今年{$this->age}岁了。";
}
function get_name(){//添加方法
return $this->name; //返回姓名
}
private function get_age(){//添加方法
return $this->age;
}
}
//继承
class Student extends People{
}
$stu = new Student("洋学生",28);
print_r($stu -> intro());
?>
输出结果:
我的名字是:洋学生,今年28岁了。
子类除了继承父类的属性和方法也可以自己创建自己的属性和方法,然后调用自己的属性和方法