众所周知,常量、变量、数组、类和对象及方法共同构成了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();
?>

效果如图所示:

转载于:https://www.cnblogs.com/chenyoumei/p/8064654.html

新手指引,php什么是常量、变量、数组、类和对象及方法?相关推荐

  1. js打印数组,js打印对象的方法(100遍)

    js打印数组,js打印对象的方法web开发中在调试js的时候经常需要打印数组,打印对象.由于js本身没有像php那样可以直接打印数组和对象的函数,所以作者经过研究自己总结了两种方法来解决了这个问题,下 ...

  2. Java面试宝典系列之基础面试题String、变量、类与对象、集合类、SSH(一)

    作者:egg 邮箱:xtfggef@gmail.com 微博:http://weibo.com/xtfggef 博客:http://blog.csdn.net/zhangerqing(转载请说明出处) ...

  3. Java面试宝典系列之基础面试题String、变量、类与对象、集合类、SSH(二)

    作者:egg 邮箱:xtfggef@gmail.com 微博:http://weibo.com/xtfggef 博客:http://blog.csdn.net/zhangerqing(转载请说明出处) ...

  4. js中判断空数组和空对象的方法

    复习的时候做一些学习的笔记总结. javascript的值的类型: 原始值:number.string.boolean.undefined.null.symbol(ES6).bigint(ES10) ...

  5. java自学 part2 数组 类和对象 包 继承 多态 抽象类 接口

    数组:arr 获取数组的长度:arr.length 数组转字符串: Arrays.toString(arr) 数组的拷贝: Arrays.copyOf(arr,arr.length) 数组的排序:Ar ...

  6. java自定义一个数组类(封装多种方法)

    一.自定义数组类的动机 java给定的数组为静态的,我们是无法对齐进行灵活的操作,比如指定位置添加元素,删除元素,判断是否非空等,于是我们便需要利用"面向对象"的设计模式,自定义一 ...

  7. Java面试宝典系列之基础面试题String、变量、类与对象、集合类、SSH(三)

    Java面试宝典之数据结构基础 -- 线性表篇 作者:egg 邮箱:xtfggef@gmail.com 微博:http://weibo.com/xtfggef 博客:http://blog.csdn. ...

  8. jquery中json数组转成对象的方法

    rights=JSON.parse(str); 其中str为后台传过来的json数组的字符串,前台我放到input标签中了然后jquery获取到的是json数组的字符串,然后再js中用上面的语句就可以 ...

  9. PHP设计模式:工厂(静态方法里调用newobj的方法)单例(三私一公newself)注册树(使用静态变量数组存取对象)适配器(主体建立接口适配器丰富方法)

    工厂:使用工厂类的静态方法新建需要的对象 然后在外面直接调用静态方法新建对象 <?php//要创建对象实例的类 class MyObject{} //工厂类 class MyFactory{pu ...

  10. Java常用知识点汇总(基础:数组,类与对象,接口与继承)

    目录 数组 1.引用 2.增强型for循环 3.复制数组 arraycopy() 4.针对数组的工具类 Arrays 5.选择法排序 6.冒泡排序 7.练习-二维数组中的查找(剑指offer) 类与对 ...

最新文章

  1. java定义final_Java中何时将方法声明为final的
  2. CEdit里''\r\n才是换行
  3. poj 2492 A Bug's Life
  4. 虚拟网络的组建和应用课后习题答案
  5. 使用Infinispan进行Camel的事务性缓存
  6. 绝地求生测试服画面优化软件,绝地求生正式服设置详解 教你调校最完美的画质...
  7. scheduledexecutorservice 只执行一次_一个ScheduledExecutorService启动的Java线程无故挂掉引发的思考...
  8. python简单圣诞树手工折纸_简单立体手工折纸圣诞树的视频教程
  9. 原创音乐人炙手可热,中国原创音乐进入新周期?
  10. ElasticSearch:图解ElasticSearch的搜索过程
  11. 海康VisionMaster绘制图形到显示窗口
  12. 32 开漏输出 高电平_关于各种IO输出类型详解
  13. java day39【HTTP协议:响应消息 、Response对象 、ServletContext对象】
  14. KVM/QEMU libvirt 实践
  15. spss基本总结——聚类分析
  16. font awesome图标大小调整
  17. 企业cc邮箱发件服务器设置,C#发送邮件(阿里企业邮箱示例 包括各个类型的服务器及端口配置)...
  18. 【机器学习】聚类(Kmeans、MeanShift )
  19. 虚拟专用网和IPv6路由配置【Cisco】
  20. RK3399平台开发系列讲解(网络篇)7.11、图解Linux网络包接收过程

热门文章

  1. qt中socket通信流程图_Qt学习 之 Socket通信
  2. python字符串重复输出例子_使用python语言,比较两个字符串是否相同的实例
  3. 正则表达式校验特殊格式
  4. servlet详解及Tomcat中多线程下的Servlet(1)
  5. linux内核中创建线程方法
  6. apusic6.0需要新项目需要改动文件
  7. hive数据导入导出和常用操作
  8. [LintCode] 翻转二叉树
  9. 《Effective C#》读书笔记——条目25:用事件模式实现通知使用C#表达设计
  10. 【鱼眼镜头4】[鱼眼畸变模型]:四阶多项式模型