1. 构造方法简介


  • 构造方法 __construct() 是一种类结构特有的特殊方法,该方法由系统规定好
  • 实例化一个类时:先调用该方法,再返回类的对象
  • 构造方法也是普通方法,不同之处就是在实例化类时会自动调用
  • 构造方法用来初始化对象资源的,例如属性其他资源初始化

2. 私有化构造方法


a. 在类的外部实例化类,相当于在类的外部调用了构造方法

new User;

class User
{
public function __construct()
{
echo __METHOD__;
}
}

b. 单例模式设计一个类时,需要禁止类在外部被实例化,因为这样会生成无限个对象

  • 构造方法私有化之后,只能在类的内部实例化当前类
  • 为了在类的外部能够获取到类的实例,应该提供一个类的入口(静态方法),用于获取类的实例
// 返回类的实例
User::getInstance(); class User
{
/**
* 私有化构造方法
* 禁止类在外部被实例化
*/
private function __construct()
{
echo __METHOD__;
} /**
* 类的入口
* 用于获取类的实例
*/
public static function getInstance()
{
return new self;
}
}

3. 构造方法参数


(1)未定义构造方法或构造方法没有参数时

以下获取类的实例的两种方式都可以

new User;//不需要给构造方法传参,可不写括号
new User();//写了也不错 class User
{
public function __construct()
{
echo __METHOD__;
}
}

(2)构造方法有参数且参数没有默认值时,实例化类必须传入参数

new User('张三', 20);//实例化类时必须传入参数,此处参数叫实参

class User
{
// 此处参数叫形参
public function __construct($name, $age)
{
echo __METHOD__;
}
}

PHP 类的构造方法 __construct()的更多相关文章

  1. PHP 构造方法 __construct()(转)

    PHP 析构方法 __destruct() 构造方法是类中的一个特殊方法.当使用 new 操作符创建一个类的实例时,构造方法将会自动调用,其名称必须是 __construct() . 在一个类中只能声 ...

  2. PHP 构造方法 __construct()和PHP 析构方法 __destruct()

    PHP 构造方法 __construct() 允许在实例化一个类之前先执行构造方法. 构造方法 构造方法是类中的一个特殊方法.当使用 new 操作符创建一个类的实例时,构造方法将会自动调用,其名称必须 ...

  3. 009-对象—— 构造方法__construct析构方法__destruct使用方法 PHP重写与重载

    <?php /**构造方法__construct析构方法__destruct使用方法 PHP重写与重载 */ //构造方法:当实例化对象时,自动运行的方法 /*class channel{ fu ...

  4. php课程 12-38 php的类的构造方法和析构方法怎么写

    php课程 12-38 php的类的构造方法和析构方法怎么写 一.总结 一句话总结:a.__construct(参数){},__destruct(){},b.如果类中的一个方法和类名相同,则该方法为构 ...

  5. PHP 构造方法 __construct()

    PHP 构造方法 __construct() PHP 构造方法 __construct() 允许在实例化一个类之前先执行构造方法. 构造方法 构造方法是类中的一个特殊方法.当使用 new 操作符创建一 ...

  6. String类的构造方法详解

    package StringDemo; //String类的构造方法详解 //方法一:String(); //方法二:String(byte[] bytes) //方法三:String (byte[] ...

  7. java异常处理:建立exception包,建立Bank类,类中有变量double balance表示存款,Bank类的构造方法能增加存款,Bank类中有取款的发方法withDrawal(double dAmount),当取款的数额大于存款时,抛出InsufficientFundsException,取款数额为负数,抛出NagativeFundsException,如new Bank(100),

    建立exception包,建立Bank类,类中有变量double  balance表示存款,Bank类的构造方法能增加存款,Bank类中有取款的发方法withDrawal(double dAmount ...

  8. java中的反射机制,以及如何通过反射获取一个类的构造方法 ,成员变量,方法,详细。。

    首先先说一下类的加载,流程.只有明确了类这个对象的存在才可以更好的理解反射的原因,以及反射的机制. 一.  类的加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三 ...

  9. ThinkPHP中的__initialize()和类的构造函数__construct()

    ThinkPHP中的__initialize()和类的构造函数__construct()网上有很多关于__initialize()的说法和用法,总感觉不对头,所以自己测试了一下.将结果和大家分享.不对 ...

随机推荐

  1. 04 Ubuntu安装MySQL

    1. 服务器端与客户端的安装 sudo apt-get install mysql-server mysql-client 2. 启动mysql服务 sudo service mysql start ...

  2. Oracle 存储过程 批量插入测试数据

    有时候需要做DB的效率测试时,需要模拟大量数据.可以根据一条原始数据,通过执行存储过程拷贝出大量数据: CREATE OR REPLACE PROCEDURE proc_msw_strsql IS i ...

  3. 从零搭建Spring Boot脚手架(5):整合 Mybatis Plus

    1. 前言 在上一文中我根据Mybatis中Mapper的生命周期手动实现了一个简单的通用Mapper功能,但是遗憾的是它缺乏实际生产的检验.因此我选择更加成熟的一个Mybatis开发增强包.它就是已 ...

  4. 怎么对比两个excel文档的数据差异

    百度经验: https://jingyan.baidu.com/article/6181c3e0877c7a152ef15304.html

  5. 如何隐藏win32 控制台程序的console窗口 2011-06-17 17:59

    加上 即可 // 隐藏窗口#pragma   comment(linker,   "/subsystem:\"windows\"  /entry:\"mainC ...

  6. 2.MongoDB 4.2副本集环境基于时间点的恢复

    (一)MongoDB恢复概述 对于任何数据库,如果要将数据库恢复到过去的任意时间点,否需要有过去某个时间点的全备+全备之后的重做日志. 接下来根据瑞丽航空的情况进行概述: 全备:每天晚上都会进行备份: ...

  7. Python版常见的排序算法

    学习笔记 排序算法 目录 学习笔记 排序算法 1.冒泡排序 2.选择排序 3.插入排序 4.希尔排序 5.快速排序 6.归并排序 7.堆排序 排序分为两类,比较类排序和非比较类排序,比较类排序通过比较 ...

  8. Jmeter 常用函数(8)- 详解 __MD5

    如果你想查看更多 Jmeter 常用函数可以在这篇文章找找哦 https://www.cnblogs.com/poloyy/p/13291704.html 作用 将指定的字符串 MD5 加密并返回,加 ...

  9. 3.配置及其名ip映射

    sudo vi /etc/hosts 192.168.117.50 master192.168.117.60 slave1192.168.117.70 slave2192.168.117.80 sla ...

  10. IDEA_Shelve代码搁置与恢复

    日常开发中,经常会遇到在当前分支开发到一半,但是需要Checkout上个版本解决bug或调查问题的情况.这个时候,我们是将代码提到Push远程?还是直接Rollback? 最理想的做法,就是将当前的开 ...