PHP魔术方法中的构造函数(__construct)
手册中的叙述:
PHP 将所有以 __(两个下划线)开头的类方法保留为魔术方法。所以在定义类方法时,除了上述魔术方法,建议不要以 __ 为前缀。
- 构造函数方法 __construct 注意这里是两个下划线:
PHP 5 允行开发者在一个类中定义一个方法作为构造函数。具有构造函数的类会在每次创建新对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。PHP5之前的版本可能就不行了,PHP变强大也是因为在引入了这些魔术方法和面向对象的思想才变得现在这样流行,才发展状态PHP5是一个新起点,PHP7是另一个新起点,后面会提到。
<?php
/**
* Created by PhpStorm.
* User: 喝咖啡的猫
* Date: 2019/4/10
* Time: 23:22
*/
class message{
/**
*这里的public只是修饰符
*/
public function __construct()
{
/**
*这里是构造方法
* 他会比任何message类中的方法先执行
*/
echo "我是构造方法中的内容,我先与其它方法执行"."\n";
}
public function index(){
/**
*我不是构造方法
*使用我时必须实例化类再调用我的方法名称
*/
echo "我是message类下的index方法内容"."\n";
}
static public function hope(){
/**
*我的前缀修饰符 是static请注意
*/
echo "我是message类下的静态方法内容";
}
}
/**
*下面先是实例化类 不调用方法名称
*我无需调用就能先执行构造方法中的内容
*/
new message();
/** @var
* $a
*/
$a=new message();
/**
*这里我们再调用类体中的方法名称
*/
$a->index();
/**
*这下面是静态调用
*/
$a::hope();
构造方法更适合用于一些初始化的作用,比如说可以写一个类来初始化公众号的配置信息等,小程序同理
/**
*比如我们在微信公众号开发中
* 需要配置一些公众号中的APPID或者TOKEN值时
* 可以像下面这样
*/
class weixin{
/** @var
* 定义一个私有的
* $token 属性
*/
private $token;
public function __construct()
{
/**
* 比如下面使用curl库函数来模拟访问接口
* 这个curl库很强大 他也可以用来写爬虫
* 如果网站有防御爬虫的一些东西
* 可以考虑实现代理池
*
* 具体curl如何使用请参考下手册
* 这里假设$weixin_token变量等于123456
*
*/
$weixin_token=123456;
/**
*这里面调用接口或者token值
*再把这个值赋给$token属性
*便于其它地方用
*
* 假设上面通过curl库获取到的token信息
* 赋予给了$weixin_token这个变量
* 我们再把这个变量赋予给token属性
* 这就相当于完成了一次初始化token属性的操作
*/
$this->token=$weixin_token;
}
}
活诚然不痛快,死可也不容易;黑夜似乎够深了,光明依然看不见。