一、类和对象
1.类的概念
描述:使用class关键字声明
语法:class 类名{类结构}
注意:
a.类名可以是任何非 PHP 保留字的合法标签。一个合法类名以字母或下划线开头,后面跟着若干字母,数字或下划线。
b.一个类可以包含有属于自己的常量,变量【属性】以及函数【即方法】
例子:
<?php
echo '<pre>';
class Person {
public $name='beixi';
function showInfo(){
echo 'my name is beixi';
}
}
?>
2.对象的概念
描述:通过new+类名获取,并且类必须在实例化对象之前创建
语法: $变量=new 类名();
说明:
a.对于创建对象的语句中,new后面的类名有没有小括号都可以
b.对象与对象之间的传值仍然是赋值传递,只不过传递的内容是一个内存地址
<?php
echo '<pre>';
class Person {
public $pname='beixi';
function showInfo(){
echo 'my name is beixi';
}
}
$name = new Person;//创建对象
print_r($name);
echo '<br>';
$name->showInfo();//调用对象里的方法
echo '<br>';
echo $name->pname;//调用并输出属性
?>
3.属性关键字
描述:用来说明类中属性能够使用的范畴。
语法:由关键字public、protected或者private开头,然后跟一个普通的变量来声明组成
class 类名{
属性关键词 $变量名(属性名) = 属性值;
属性关键词 function 方法名 (参数1,参数2,…){ 方法内容代码; }
}
说明:
a.属性中的变量可以初始化,但初始化的值必须是常数。
b.类的属性和方法如果没有写明类型关键词,则都默认是公有
public:被定义为公有的类成员可以在任何地方被访问。
protect:被定义为受保护的类成员则可以被其自身以及其子类和父类访问。
private:被定义为私有的类成员则只能被其定义所在的类访问。
c.在类的成员方法中,可以用->来访问非静态属性,其中->称为对象运算符
<php
echo '<pre>';
class Peo{
public $pname='beixi';//公有属性
//公有方法
function showInfo(){
echo 'my name is beixi';
}
private $page=18;//私有属性
公有方法,用来调用page属性 特权函数
public function getPage(){
//$this为一个伪对象,表示当前正在调用这个方法的对象
echo $this->page;
}
// 私有方法
private function self(){
echo 'hello world';
}
//公有方法,用来调用self()方法
public function canusedSelf(){
$this->self();
}
}
$beixi=new Peo;//创建对象
print_r($beixi);
echo '<br>';
$beixi->showInfo();//调用方法
echo '<br>';
echo $beixi->pname;//调用属性
echo '<br>';
echo $beixi->getPage();//调用方法
echo '<br>';
$beixi->canusedSelf();
?>
二、类常量、静态变量、构造函数
1.类常量和静态变量
描述:php中的类常量和静态变量是存在与类结构中的两个与常见属性的两种结构
语法:类常量由关键字const声明,静态变量由static声明
class 类名{
const 类常量(没有$开头) = 简单值;
static 静态变量名(有$开头) = 简单值;
}
类常量: const声明, 不能修改,一经声明值即固定 ::调用 调用时可不实例化对象直接通过类名调用
静态变量: static声明 仅在类被声明时执行一次,能修改 ::调用 调用时可不实例化对象直接通过类名调用
<?php
class Car{
const carType='fute';//类常量
static $carPrice=12345;//静态变量
}
echo Car::carType;
echo '<br>';
echo Car::$carPrice;
echo '<br>';
Car::$carPrice+=1000000;
echo Car::$carPrice;
echo '<br>';
$mycar = new Car;//创建对象
echo $mycar::carType;
echo '<br>';
echo $mycar::$carPrice;
?>
2.构造函数
描述:构造函数是类在实例化对象时自动执行,用来帮助类去构造对象的函数;php中每一个类的内部,都拥有一个和类名完全相同的隐藏的方法,这个方法就是构造函数
语法:
class 类名{
function__construct(){
//主动修改的代码
}或
function 类名(){
//主动修改的代码
}
}
说明:两种写法都能够实现构造函数的主动编辑,但是需要知道系统自动提供的是第二种结构
<?php
class Peo{
public $peoName;
function peo(){
$this->peoName='默认值';
}
}
$beixi = new Peo();
echo $beixi->peoName;//调用属性
?>