导航
- 2、PHP对象基础
- 2.1、编写第一个类
- 2.2、第一个对象(或者两个)
- 2.3、类属性
- 2.4、访问属性
- 2.5、设置属性
- 2.6、函数(方法)使用
- 2.7、构造函数
- 2.8、基本类型和PHP类型检查函数
- 2.9、继承
2、PHP对象基础
2.1、编写第一个类
php
class ShopProduct {
//类体
}
2.2、第一个对象(或者两个)
$product1 = new ShopProduct();
$product2 = new ShopProduct();
new 操作符和作为他唯一操作数的类名一起被调用,并生成类的实例。
本例中$product1和$product2同一个类生成的相同类型的不同对象
关于类和对象关系 请移步
点击观看视频
2.3、类属性
puclic(公开访问)、protected(仅子类、父类可以访问)、private(仅本类才能访问)
php
class ShopProduct
{
public $title = "default";
public $price = 10;
public $firstName = "Super";
public $secondName = "U";
}
2.4、访问属性
我们可以用->来访问属性变量,如下:
php
$product1 = new ShopProduct();
echo $product1->price;//这边输出 10
2.5、设置属性
因为属性被定义成public,所以我们可以给属性附值:
php
$product1->price = 20;
echo $product1->price;//这边输出 20
当我们要获取名字(full name):我们可以这样做:
php
echo $product1->firstName." ".$product1->secondName; //super U
太麻烦了实在。如果能让对象代替我们处理这件苦差事就好了。请看下面的使用方法。
2.6、函数(方法)使用
格式如下
public function myMethod()
{
//...
}
ShopProduct类 可以改成这样:
class ShopProduct
{
public $title = "default";
public $price = 10;
public $firstName = "Super";
public $secondName = "U";
//注意类方法也可以声明成public\protected\private
public function getFullName()
{
return $product1->firstName." ".$product1->secondName;
}
}
如何使用?
$product1 = new ShopProduct();
echo $product1->getFullName(); //输出super U,刚才的问题得到了解决。
2.7、构造函数
小需求:现在要创建一个fullName分别为Super2 U2、Super3 U3的对象。并分别得到他的fullName值,我们可以这么做:
$product2 = new ShopProduct();
$product2->firstName = "Super2"
$product2->secondName = "U2";
echo $product2->getFullName();
$product3 = new ShopProduct();
$product3->firstName = "Super3"
$product3->secondName = "U3";
echo $product3->getFullName();
ok done.
有没有觉得太繁琐?有没有能自动调用的方法。答案是肯定的。引出我们的构造方法:
class ShopProduct
{
public $title = "default";
public $price = 10;
public $firstName = "Super";
public $secondName = "U";
function __construct($title, $price, $firstName, $secondName)
{
$this->title = $title;
$this->price = $price;
$this->firstName = $firstName;
$this->secondName = $secondName;
}
public function getFullName()
{
return $product1->firstName." ".$product1->secondName;
}
}
注意关键词 __construct,他会在创建对象时候,自动去调用。
让我们try it.改造上面的小需求:
$product2 = new ShopProduct(‘default’,10,'Super2','U2');
echo $product2->getFullName();
$product3 = new ShopProduct(‘default’,10,'Super3','U3');
echo $product3->getFullName();
ok done.是不是简洁了很多。
2.8、基本类型和PHP类型检查函数
类型检查函数 | 类型 | 描述 |
---|---|---|
is_bool() | 布尔型 | 值为true或者false |
is_integer() | 整型 | 整数 |
is_double() | 双精度型 | 浮点数 |
is_string() | 字符串 | 字符数据 |
is_object() | 对象 | 对象 |
is_array() | 数组 | 数组 |
is_resource() | 资源 | 用于识别和处理外部资源的(如数据库或文件)句柄 |
is_null() | NULL | 未分配的值 |
2.9、继承
继承是从一个类得到一个或者多个类的机制。
例子:
class ShopProduct
{
public $title = "default";
public $price = 10;
public $firstName = "Super";
public $secondName = "U";
public $playLength;
function __construct($title, $price, $firstName, $secondName,$playLength)
{
$this->title = $title;
$this->price = $price;
$this->firstName = $firstName;
$this->secondName = $secondName;
$this->playLength = $playLength;
}
//注意类方法也可以声明成public\protected\private
public function getFullName()
{
return $this->firstName." ".$this->secondName();
}
}
Class CdProduct extends ShopProduct
{
function getplayLength()
{
return $this->playLength;
}
}
这样CdProduct除继承父类ShopProduct所有特性外,还自己多了个getplayLength的方法