PHP基础之类
来源:互联网 发布:python smtplib 编辑:程序博客网 时间:2024/05/21 23:01
面向对象编程就是要把需要解决的问题抽象为类。关于面向对象的思想我想大家都应该在其他语言中或多或少了解过。简单来说就是将事物具有的共性抽出来作为类的属性,
与属性相关的操作作为类方法。
在php中申明一个类需要使用关键字class来实现。这于其他语言是相同的。比如我们声明一个学生的类,例如:
class student{ private $name; private $sex; private $age; private $classes; public function setName($values) { $this->name = $values; } public function setSex($param) { $this->sex = $param; } public function setAge($param) { $this->age = $param; } public function setClasses($param) { $this->classes = $param; }}
上面代码声明了一个包含学生姓名,性别,年龄和班级的类。其中姓名,性别,年龄和班级是作为student类的私有变量(属性),其中的set方法作为类的公有方法。
关键字public和private定义的是属性和方法的访问权限。private定义的属性只能在类内部使用,public定义的属性或者方法则可以在类的外部被调用。
构造函数和析构函数
构造函数是在对象实例创建的时候自动调用的方法,相反析构函数是在对象销毁的时候自动调用的方法。
构造函数通过__construct定义,析构函数通过__destruct定义。
其中构造函数主要用于创建对象时候初始化成员变量.
class ClassName { public $name; public $age; function __construct($name, $age) { $this->name = $name; $this->age = $age; echo "construct excute by auto"; } function getValue() { echo "<br/>"; echo "姓名:" . $this->name; echo "<br/>"; echo "年龄:" . $this->age; } function __destruct() { echo "destruct excute by auto"; }}$obj = new ClassName("莉莉", 25);$obj->getValue();--->construct excute by auto姓名:莉莉年龄:25destruct excute by auto
访问类中的成员:
如果是在类内部访问成员上面的例子就可以看出来,使用->操作符可以访问类成员。另外在对象的方法执行的时候会自动定义一个特殊变量,那就是上面例子的$this变量,
这个变量表示的是对象本身的引用,它的作用就是完成对象内部成员之间的访问。
另外访问对象成员有时还可以实用“::"符号,使用该符号一般来说可以在以下情况下出现:
1.parent::父类成员---调用父类的成员变量常量的方法
2.self::自身成员---调用当前类的静态成员和常量
3.类名::成员 ---访问类的变量常量
在上面的例子里面我们加一个const变量和一个方法:
const COUNTRY = 'China'; public function getCountry() { echo self::COUNTRY; echo "<br/>"; echo $this->COUNTRY; echo "<br/>"; }
$obj = new student();$obj->getCountry();
输出:
ChinaNotice: Undefined property: student::$COUNTRY in E:\PHP\PHP_Class\PHP_Class.php on line 37可见在类中访问const常量应该通过self来访问。
静态方法和属性
在php中,通过static关键字来修饰的成员属性和方法称为静态方法或者静态属性。它的特性就是可以在不实例化类的情况下直接使用。
静态方法和静态属性也被称为类方法,类属性。它与对象的属性的区别就是静态方法或者静态属性是属于类的,而不是被限定在任何一个特定的对象实例。
在类外部可以通过类名::静态属性名/静态方法名的形式来使用,在类内部可以通过self::静态方法名/静态属性名使用。
示例代码如下:
class staticClass { static $staticVal = 0; public $val = 0; static function getStaticVal() { echo self::$staticVal; echo "<br/>"; } static function setStaticVal($param) { self::$staticVal = $param; echo self::getStaticVal(); echo "<br/>"; } function change($param) { $this->setStaticVal($param); }}staticClass::getStaticVal();staticClass::setStaticVal(100);$obj = new staticClass();$obj->change(1000);-->01001000
- PHP基础之类
- 菜鸟必看php基础之类对
- php进阶笔记之类
- php手册之类常量
- PHP之类补充
- PHP之类特性
- PHP学习笔记之类
- java基础之类继承
- java基础之类继承
- C++基础之类
- Java 基础之类集
- java基础之类
- C++基础之类
- JVM基础之类加载
- PHP 数学运算之类笔记
- php面向对象之类成员
- php字符截取之类的
- 基础加强之类加载器
- 继承方式对于访问权限的影响
- JZOJ5373. 【NOIP2017提高A组模拟9.17】信仰是为了虚无之人
- JavaScript-2-1:前端基本功
- python3-类的定义与方法
- 58. Length of Last Word
- PHP基础之类
- 之字形打印矩阵(Java)
- 【springBoot】springBoot集成redis的key,value序列化的相关问题
- 卷积神经网络CNN
- 大数据Zookeeper_05
- 浅谈分布式服务协调技术 Zookeeper
- mycat 主从读写分离-主存切换(验证)
- android学习---使用多媒体类MediaPlayer
- Android Apk反编译