php阶段总结

本文总结了PHP中的静态变量及其存储特性,强调它们在程序运行期间始终保持占用内存。此外,介绍了静态方法的访问方式,并详细阐述了单例模式的概念,确保一个类只能创建一个对象。还探讨了对象赋值的引用赋值行为,以及如何通过`clone`避免对象间的相互影响。最后,简要提及了命名空间的作用,即解决代码中的命名冲突问题。
摘要由CSDN通过智能技术生成

静态变量 类型说明符是static。

静态变量属于静态存储方式,其存储空间为内存中的静态数据区,该 区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都不释放),直到整个程序运行结束。
除了静态的属性还有静态的方法.
在类的外部访问静态成员时,必须使用类名和扣操作符 :: ,而不需要创建对象.

  • 单例模式(3个私有一个共有)

一个类永远只能创建一个对象,不管用任何方法都无法创建第2个对象,该对象大家共享。
必须是自行创建这个类的对象;
只提供私有的构造函数,
含有一个该类的静态私有对象,
提供一个静态的公有的函数用于创建或获取它本身的静态私有对象。
有一个private的clone方法,防止克隆;

<?php
 
/例
class Uni
{
    //创建静态私有的变量保存该类对象
    static private $instance;
 
    //构造方法是私有,防止外部直接创建对象
    private function __construct()
    {
    }
 
    //防止克隆对象
    private function __clone()
    {
 
    }
 
    static public function getInstance()
    {
        //判断$instance是否是Uni的对象
        //没有则创建
        //注意instanceof的使用
        if (!self::$instance instanceof self) {
            self::$instance = new self();  //在类中实例化本类的对象,使用self
        }
        return self::$instance;
 
    }
 
    //普通方法
    public function method()
    {
        echo '正常执行对象中的方法';
    }
}
 
$ob1 = Uni::getInstance(); //获取uni的对象
$ob1->method();
echo "<br>";
 
$ob2 = Uni::getInstance();
$ob2->method();
echo "<br>";
 
if ($ob1 === $ob2) {
    echo 'obj和ob2是同一个对象';
} else {
    echo 'obj和ob2不是同一个对象';
}

小总结:使用单例模式才是一个对象,不然 上述结果就是产生两个对象。
在类的外部,实例化的个数是无法控制的。

  • 对象赋值
    对象之间的赋值,实际就是引用赋值,两个对象之间赋值后,就是一个对象了。所以当一个对象的内容发生变化后,另一个对象的内容也会发生变化。
    普通变量之间的赋值,如果也想使用引用赋值,必须使用&。
    如果要复制一个对象并不受他影响可以使用clone
  • 命名空间
    命名空间通过关键字namespace 来声明。如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间。
    命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值