php init()和__construct() 区别
时间:2022-06-26
本文章向大家介绍php init()和__construct() 区别
,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
区别
__construct()
__construct()
: 是PHP内置的构造函数,实例化之前 PHP 解析引擎自动调用,做一些初始化的工作或者外部服务器检测的工作。在实例化对象之前需要做的工作都写在这里
init() :
init()
方法一般都是自己定义的,可以随便写名字,一般会在__construct()
中写 调用。功能和__construct()
差不多但是需要自己写调用, 其实就是普通方法,只是这个方法大家一般默认都是用来初始化东西的。
protected function __construct
如果将 __construct
定义为 protected 那么就不能直接实例化了,需要添加一个额外的入口,这个入口一般是静态方法public static function instance
<?php
class Test {
public function init(array $config) {
echo "3: init..... n";
var_dump($config,);
}
protected function __construct(array $config = array()) {
echo "2: __construct ..... n";
phpversion() > "5.3" || exit("版本过低,请升级版本");
$this->init($config);
}
public function instance($config = array()) {
echo "1: instance ..... n";
return new self($config);
}
}
$config = array("test"=>1);
$test = Test::instance($config);
var_dump($test);
如果不需要参数只需要将所有的参数$config去掉都好了
结果
1: instance .....
2: __construct .....
3: init.....
array(1) {
'test' =>
int(1)
}
class Test#1 (0) {
}
单例模式
class Singleton
{
/**
* Description:(1)静态变量,保存全局实例,跟类绑定,跟对象无关
* (2)私有属性,为了避免类外直接调用 类名::$instance,防止为空
*/
private static $instance;
/**
* Description:数据库连接句柄
*/
private $db;
/**
* Description:私有化构造函数,防止外界实例化对象
*/
private static function __construct()
{
}
/**
* Description:私有化克隆函数,防止外界克隆对象
*/
private function __clone()
{
}
/**
* Description:静态方法,单例访问统一入口
* @return Singleton:返回应用中的唯一对象实例
*/
public static function GetInstance()
{
if (!(self::$instance instanceof self))
{
self::$instance = new self();
}
return self::$instance;
}
/**
* Description:获取数据库的私有方法的连接句柄
*/
public function GetDbConnect()
{
return $this->db;
}
}
- 需要一个保存类的唯一实例的静态成员变量(通常$instance为私有变量)
- 构造函数和克隆函数必须声明为私有的,为了防止外部程序new类从而失去单例模式意义
- 必须提供一个访问这个实例的公共静态方法,从而返回唯一实例的一个引用
- 为什么GAC和VS引用的程序集不一致?
- GraphQL 浅谈,从理解 Graph 开始
- 分布式系统CAP理论
- 美媒盘点2018年将改变世界的四大技术趋势
- 如果你想深刻理解ASP.NET Core请求处理管道,可以试着写一个自定义的Server
- 路面能发电,智慧交通不遥远
- 小程序:企鹅帝国身后,微信帝国正悄悄露出冰山一角!
- ASP.NET MVC路由扩展:路由映射
- 如何改善遗留的代码库
- ASP.NET的路由系统:根据路由规则生成URL
- ASP.NET Core 1.0中实现文件上传的两种方式(提交表单和采用AJAX)
- 通过3个Hello World应用来了解ASP.NET 5应用是如何运行的(1)
- 工业X.0将至 企业数字化转型该怎么做?
- 通过3个Hello World应用来了解ASP.NET 5应用是如何运行的(2)
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- 总结java中创建并写文件的五种方式-JAVA IO基础总结第一篇
- 8成以上的java线程状态图都画错了,看看这个-图解java并发第二篇
- 特殊数据格式处理-JSON框架Jackson精解第2篇
- 序列化与反序列化核心用法-JSON框架Jackson精解第一篇
- 属性序列化自定义排序与字母表排序-JSON框架Jackson精解第3篇
- 【我在拉勾训练营学技术】mysql 索引面试再也不怕啦
- 智能合约中常见的漏洞总结复现#技术创作101训练营#
- JS根据列表排列对象数组
- git提取两次提交或者版本的差异文件并打包成zip压缩包
- 博客通用版Live2d伊斯特瓦尔发布
- 一个小需求,自动重启k8s集群中日志不刷新的POD
- 多图,一文了解 8 种常见的数据结构
- Jenkins--pipline 流水线部署Java后端项目
- 微信小程序修炼之路LV1—工具介绍篇
- CentOS 7 部署OpenLDAP+FreeRadius