PHP类的声明和对象的创建
面向对象编程就是要把需要解决的问题抽象为类。在现实生活中,我们可以找到很多这样的例子,比如可以抽象出这个世界上的一个物种为人类,人类具有身高、体重、腰围等属性,同时人类还可以执行一些动作,比如行走、吃饭、跳跃等。
同理,在编程中,抽象出的类也具有这样的属性和动作,不过在类中,我们把这种“动作”称作类的方法。比如常用的数据库连接类,在这个类中一般会包含数据库类型、数据库的 HOST、数据库用户名和密码等属性,同时也包含一些数据库操作的方法,如插入、更新、查询、删除数据等。
图1:数据库连接类的示例图
$dbtype、$host、$username、$password、$pre 是该类中的属性,function 定义类中的方法。
一个类可以实例化多个对象,每个对象都是独立的个体,这些实例化的对象拥有类中定义的全部属性和方法。当对其中一个对象进行操作时,比如改变该对象的属性等,不会影响其他对象。
在对象方法执行的时候会自动定义一个 $this 的特殊变量,表示对象本身的引用。通过
使用
访问对象的成员有时还可使用
同理,在编程中,抽象出的类也具有这样的属性和动作,不过在类中,我们把这种“动作”称作类的方法。比如常用的数据库连接类,在这个类中一般会包含数据库类型、数据库的 HOST、数据库用户名和密码等属性,同时也包含一些数据库操作的方法,如插入、更新、查询、删除数据等。
图1:数据库连接类的示例图
PHP 声明一个类
PHP 类在使用前需要声明,声明一个类使用关键词 class,比如声明一个数据库连接类:<?php class conn{ private $dbtype = 'mysql'; private $host = '127.0.0.1'; private $username = 'root'; private $password = '123456'; private $pre = 'zwt_'; public function insert(){} public function update(){} public function delete(){} public function select(){} } ?>以上代码声明了一个包含数据库连接属性和操作方法的类 conn,其中的 private 和 public 是定义属性和方法的关键词,其规定了被定义的属性和方法可在什么地方被访问。
$dbtype、$host、$username、$password、$pre 是该类中的属性,function 定义类中的方法。
PHP 类的实例化(对象的创建)
在 PHP 中,声明一个类之后,要使用类中的方法,一般需要先实例化一个类,这个实例便是类中的对象。创建一个类的实例使用关键词 new。示例如下:<?php class conn{ private $dbtype = 'mysql'; private $host = '127.0.0.1'; private $username = 'root'; private $password = '123456'; private $pre = 'zwt_'; public function insert(){} public function update(){} public function delete(){} public function select(){} } $connObj = new conn(); var_dump($connObj); ?>本例创建了类 conn 的一个实例。如果是在类内部创建实例,可以使用 new self 来创建新对象。
一个类可以实例化多个对象,每个对象都是独立的个体,这些实例化的对象拥有类中定义的全部属性和方法。当对其中一个对象进行操作时,比如改变该对象的属性等,不会影响其他对象。
PHP 访问类中成员
实例化一个类后,要访问类中的成员,可使用符号->
,请看下面的示例:
<?php class conn{ public $dbtype = 'mysql'; private $pre = 'zwt_'; public function test(){ echo "test"; } } $obj = new conn(); $obj->test(); echo $obj->dbtype; ?>该例中使用
->
访问类 conn 中的 test 对象。在对象方法执行的时候会自动定义一个 $this 的特殊变量,表示对象本身的引用。通过
$this->
形式可引用该对象的方法和属性,其作用就是完成对象内部成员之间的访问,示例如下:
<?php class conn{ public $dbtype = 'mysql'; public function test(){ echo $this->getDbtype(); } public function getDbtype(){ echo $this->dbtype; } } $obj = new conn(); $obj->test(); ?>
使用::
访问对象成员
访问对象的成员有时还可使用::
符号。使用该符号一般有以下3种情况:
- parent::父类成员,这种形式的访问可调用父类的成员变量常量和方法。
- self::自身成员,这种形式的访问可调用当前类中的静态成员和常量。
- 类名::成员,这种形式的访问可调用类中的变量常量和方法。
::
符号的使用示例如下:
<?php class conn{ public $dbtype = 'mysql'; const HOST = '127.0.0.1'; // 在类中使用const定义常量HOST public function test(){ echo "test"; //echo $this->getDbtype(); //静态方法getDbtype()不能在类内部以$this->的形式访问 } public function test1(){ echo self::HOST; //self访问常量HOST self::getDbtype(); //self访问静态方法getDtype() } public static function getDbtype(){ //使用static修饰的方法称为静态方法 echo "mysql"; } } $obj = new conn(); $obj->test1(); conn::test(); //没有实例化类, 使用“::”访问类中的方法 ?>本示例运行结果为:
127.0.0.1mysqltest
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算