PHP之面向对象的程序设计(一)
来源:互联网 发布:dota2新人选手知乎 编辑:程序博客网 时间:2024/04/30 11:11
PHP之类与对象
const与define的区别
const是用于类成员常量的定义了,定义之后不可改,而define我们定义的是全局常量了, 这样我们在其它地方访问但不能改变了,具体还有一些细节我们下面给各位列出来吧
注意:define不能定义在类中,而const必须定义在类中,并且const必须通过类名::变量名来进行访问
- const用于类成员变量定义,一旦定义且不能改变其值。define定义全局常量,在任何地方都可以访问。
- define不能在类中定义而const可以。
const不能在条件语句中定义常量
const采用一个普通的常量名称,define可以采用表达式作为名称。
- const只能接受静态的标量,而define可以采用任何表达式。
- const 总是大小写敏感,然而define()可以通过第三个参数来定义大小写不敏感的常量
- 使用const简单易读,它本身是一个语言结构,而define是一个方法,用const定义在编译时比define快很多。
对象中成员的访问
访问对象的成员通过对象的引用来访问:
例如:
对成员属性的访问包括赋值操作和获取成员属性的操作。
访问对象中的成员和访问数组中的元素类似。只能通过对象的引用来访问对象中的每个成员。
$引用名 = new 类名称([参数数列表]); //对象实例化格式$引用名 -> 成员属性 = 值; //对成员属性赋值的操作$echo $引用名 -> 成员属性; //获取成员属性的值$引用名 -> 成员方法; //访问对象中的成员方法
如果对象中的成员不是静态的那么,“对象引用名->属性”或“对象引用名->方法”是唯一的访问形式。
特殊的对象引用”$this”
不管是在对象的外部还是在对象的内部,访问对象中的成员都必须使用对象的引用变量。
但对象创建完成以后,对象的引用名称无法在对象的方法中找到。
如果在对象的方法中再使用new关键字创建一个对象则是另一个对象,调用的成员也是另一个新创建对象的成员。
对象一旦被创建,在对象中的每个成员方法里面都会存在一个特殊的对象引用“
不管是在对象内部使用$this访问自己对象内部的成员,还是在对象外部通过对象的引用名称访问对象中的成员。都需要使用特殊的运算符”->”
header("Content-type:text/html;charset=utf-8");class Person{ public $name; public $sex; public $age; function say(){ echo"我的名字:".$this->name." 性别:".$this->sex." 年龄".$this->age; } function run(){ echo$this->name."在走路<br>"; }}$a =new Person();$a -> name="jack";$a -> sex = 'man';$a -> age = 15;$a -> say();$a -> run();
PHP类的静态(static)方法和静态(static)变量使用介绍
在php中,访问类的方法/变量有两种方法:
创建对象
object=newClass(),然后使用”−>”调用: object->attribute/function,前提是该变量/方法可访问。直接调用类方法/变量:class::attribute/function,无论是静态/非静态都可以。但是有前提条件:
- 如果是变量,需要该变量可访问。- 如果是方法,除了该方法可访问外,还需要满足:- 如果是静态方法,没有特殊条件;- 如果是非静态方法,需要改方法中没有使用$this,即没有调用非静态的变量/方法,当然,调用静态的变量/方法没有问题。
然后我们再看一下使用$object->… 和使用class::… 都有什么区别:
- 使用$object->… ,需要执行构造函数创建对象;
- 使用class::… 调用静态方法/变量,不需要执行构造函数创建对象;
- 使用class::… 调用非静态方法/变量,也不需要执行构造函数创建对象。
然后奇怪的地方就出来了,既然2和3都一样,那静态方法/变量存在还有什么意义呢?
差异还是显然存在的,如下:
- 静态变量
静态成员只保留一个变量值,而这个变量值对所有的实例都是有效,也就是说,所有的实例共享这个成员。
- 静态方法
静态方法可以直接使用class::… 来调用,而非静态方法需要满足一定限制条件才能使用class::.. 的方法调用
header("Content-type:text/html;charset=utf-8");class Person{ static $name; static $sex; static $age; function say(){ echo"我的名字:".self:: $name." 性别:".self:: $sex." 年龄".self:: $age; } function run(){ echo self:: $name."在走路<br>"; }}Person:: $name = '李四';Person:: $sex = '男';Person:: $age = 15;$a =new Person();$a -> say();$a -> run();
- PHP之面向对象的程序设计(一)
- PHP面向对象的程序设计(概述)
- 面向对象的程序设计(一)
- PHP面向对象的程序设计
- PHP面向对象的程序设计
- php的学习笔记之面向对象(一)
- PHP学习(十五)--PHP面向对象的程序设计
- javaSE学习笔记之面向对象程序设计(一)
- PHP面向对象程序设计
- 个人PHP学习笔记(五)--面向对象的程序设计
- PHP面向对象的程序设计学习总结
- PHP面向对象的程序设计2
- PHP面向对象的程序设计3
- JavaScript之理解对象(面向对象的程序设计)
- JavaScript学习——面向对象的程序设计(一)
- LUA面向对象程序设计(一)类
- JS程序设计 Chapter6 - 面向对象 (一)
- 面向对象PHP(一)
- js控制ctrl+c 和 ctrl+v 不可使用
- 长个见识——第六届可穿戴大会
- Learning Depth from Single Monocular Images Using Deep Convolutional Neural Fields
- hello word
- runtime为类目扩展属性
- PHP之面向对象的程序设计(一)
- maven install 报错解决
- MVC(模型-视图-控制器)的实现
- iframe刷新父页面
- H2Database之h2-xxx.jar分析
- C++编程笔记:dll的生成与使用
- Hibernate中日期类型字段的映射策略
- 简单聊聊Handler机制
- Linux tcpdump命令详解