众所周知,常量、变量、数组、类和对象及方法共同构成了PHP的基石。那么什么是常量?什么是变量?什么是数组?什么是类和对象及方法?我在此谈谈个人浅见,新手指引,高手勿喷。

PHP 常量

定义:常量是单个值的标识符(名称),有效的常量名以字符或下划线开头(常量名称前面没有 $ 符号),在脚本中无法改变该值,常量贯穿整个脚本,且作用域自动全局

简单来说,日常生活中固定不变的事物皆可为常量,例如1公斤=1000克,1分钟=60秒;例如说,我们在php脚本编写一分钟倒计时功能时,需要用到常量60秒,我们即可定义一个常量:define("min","60");;这个常量min值为60,拥有全局作用域,且无法被改变。

php中创建常量使用define() 函数,它包括三个参数:1.参数名,2.参数值,3.是否对大小写敏感(此参数可以不设置,默认为false,不敏感)。形如define(name,value),例如上文中定义常量的代码为:define("min","60");

PHP 变量

我对变量的理解:在日常生活中,有某些事物的值是不断变化的,例如说体重、年龄、日照时长等等等等,为了描述这些事物,显然单纯使用常量是无法实现的,因此变量应运而生。

定义:变量是一个可变化值的标识符(名称),其值不断改变,可以是数字、字符串、数组、对象等,实质上变量就是一个存储信息的容器。变量又分为全局变量与局部变量,局部变量在定义此变量的函数方法外,无法被调用。

简单来说,日常生活中不断变化值的事物即为变量,例如体重,100个人可能有100个体重值,因此在php中涉及到人的属性时,体重weight必须定义为变量。举例而言,我们用php编写加法功能:$c=$a+$b;,显而易见,两个加数及结果的值都是变化的,则这两个加数及结果都要被定义为变量。

php与js或是c不同,在PHP中没有创建变量的命令,变量会在首次为其赋值时被创建,即不需定义,可直接使用。定义方法形如:$name=value;例如上文中的加法功能中,三个变量的定义:$a=1;$b=2;$c=$a+$b;

变量命名规则:

  1.变量以 $ 符号开头,其后是变量的名称

  2.变量名称必须以字母或下划线开头

  3.变量名称不能以数字开头

  4.变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _)

  5.变量名称对大小写敏感($y 与 $Y 是两个不同的变量),这一点至关重要。

PHP 数组

我对数组的理解:上文提到,人的体重必须定义为变量,但是若在php脚本中涉及到多个人,那为了描述多个人的体重,就需要定义多个体重变量。若脚本涉及到许多个甚至是无数个人,那显然单纯的定义变量是无法实现的,为了解决这类问题,php定义了数组。

定义:可以同时保存多个值的变量即为数组,数组是一种特殊的变量。理论上而言,数组可以储存一串毫无关联的变量的值,但实际上,我们在php中使用数组,储存的一般都是一串具有相同属性变量的值,例如描述人体重的数组、描述人年龄的数组等等。

简单而言,为了描述生活中具有相同属性的事物,就需要用到数组。譬如说人的体重,学生的成绩,汽车的品牌等等。举例而言,使用php编写教学系统,涉及到某门功课学生成绩,则需要定义数组:$result=array("95","96","85");这个数组拥有三个值,95,96,85,表示三个学生在某一门课的成绩。

php中创建数组需要使用 array() 方法,形如$arrayName = array(value1,value2,value3...);,举例来说:$result=array("95","96","85");,这就是数组的创建。

数组通过下标进行访问,如对上文中的数组$result进行访问,$result[0]代表第一个值95,$result[1]代表第二个值96...

数组又细分为三种类型:

  1.索引数组 - 带有数字索引的数组

  2.关联数组 - 带有指定键的数组

  3.多维数组 - 包含一个或多个数组的数组

索引数组即常见以数字下标进行访问的数组,譬如上文的$result就是一个索引数组,索引数组的输出一般通过for循环。

关联数组即给数组值进行命名的数组,形如$arrayName = array(name1 => value1,name2 => value2,name3 => value3...)。实例:$weight = array('Bob' => '62','Davi' => '59','Susan' => '48');,关联数组的访问通过数组值的名来进行访问,例如$weight[Bob]代表第一个值62.。关联数组的输出通过foreach as来进行输出。

多位数组即数组值依旧为数组的数组,形如$arrayName = array(array(value1,value2,value3...),array(value1,value2,value3...),array(value1,value2,value3...)...);,多为数组的访问也是通过下标进行访问的。

PHP 类、对象及方法

我对对象及类的理解:现实生活中的一切事物皆为对象。上文提到,为了描述多个人的多个属性,需要用到数组。然而实际上,人不只拥有属性,人还拥有行为,譬如吃饭、睡觉、打豆豆...,那我们要如何描述人的行为?因此php定义了类和对象。

在我的理解中,php是一个世界,在这个世界中,常量是点,变量是线,数组是面,类和对象则是立体。

定义:

  对象:对象是人们要进行研究的任何事物,它不仅能表示具体的事物,还能表示抽象的规则、行为、计划或事件。对象具有状态,一个对象用数据值来描述它的状态。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。

  类:具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。简而言之,对象的抽象是类,类的实例化就是对象,类实际上就是一种数据类型。类具有属性,它是对象状态的抽象,用数据结构来描述类的属性。类具有方法操作,它是对象行为的抽象,用操作名和实现该操作的方法来描述。

对象和类的关系:类与对象的关系就如模具和铸件的关系,类实例化的结果就是对象,而对象的抽象就是类,类描述了一组具有相同特性(属性)和相同行为的对象。

实例化对象需要先有类,然后才能实例化,

类的声明方式形如:
class ClassName{}

类中声明变量的方式形如:
public $name1;//声明公有变量
private $name2;//声明私有变量
在类中,公有变量可以在实例化对象中赋值与访问,而私有变量无法在实例化对象中赋值与访问,只能在类内部访问

类中声明方法的方式形如:
public function functionName1(){}//声明公有方法
private function functionName2(){}//声明私有方法
在类中,公有方法可以在实例化对象中执行,而私有方法无法在实例化对象中执行,只能在类内部执行

类方法中访问类变量的方式形如:
$this->name

对象和类代码实例:

<?php
//头部声明显示方式为text/html,编码格式为utf-8,避免出现中文乱码
header('Content-Type:text/html;charset=utf-8');
class person{
//类中变量的定义
public $name;//定义公有变量
public $age;
public $weight;
public function eat(){
echo $this->name.'正在吃饭!<br>';
}
public function sleep(){
echo $this->name.'正在睡觉!<br>';
}
public function play(){
echo $this->name.'正在打豆豆!<br>';
}
public function personInfo(){
echo '个人信息:<br>姓名:'.$this->name.'<br>年龄:'.$this->age.'<br>体重:'.$this->weight;
}
}

//类的实例化就是对象,$obj是一个对象
$obj = new person;
$obj->name='meizi';//给对象的属性赋值
$obj->age='22';
$obj->weight='58';
$obj->eat();//调用对象的方法
$obj->sleep();
$obj->play();
$obj->personInfo();
?>

效果如图所示: