| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> PHP知识库 -> php中,new实例化调用方法和self::调用方法调用的区别 -> 正文阅读 |
|
[PHP知识库]php中,new实例化调用方法和self::调用方法调用的区别 |
静态方法:在内存中只有一份,也就是你声明的那个静态方法,会存储在内存中,因此他不能用$this,因为他只是一个方法存在内存中,不是对象。如果你想要在静态方法中调用外部的东西,那么你也要让目标声明为静态或者const;让它也跟着一起存储进内存中,注意哦,这里的存储都不是整个类,而是自己本身。他们都需要用self去调用,可以这么说,self就是调用不是类对象的一种方式,是调用存储在内存的方法、变量、const,他们都是声明为静态的。
静态方法存储内存的时机是:Aoo::aa() ; 这时候,会把aa()这个方法存储在内存中 注意:只是单单这个方法存储内存哦,如果方法里面有静态调用的话,对应的目标也会跟着存内存,触发存储内存的时机也是一样的 如下:
static $a 和 const A 也会被触发存储在内存中
实例化:在内存中存储的是整个对象,里面包括静态方法和非静态方法
实例化再调用方法的时机 $aoo = new Aoo();//这里触发存储内存时机 $app->abc(); 在new Aoo()的时候,会把这个Aoo类存储到内存,这一份内存中记录的是Aoo里面的所有东西,变量、方法、静态方法、const、.............
可以看出 1、new 类的时候,内存占用会更大,因为是整个类的东西,包括了静态方法、变量等等,它的占用空间就大了。要做的东西就多了 2、self:: 静态调用的时候,只是单单把目标存储在内存中,它的占用空间就少了。要做的东西就少了。 3、如果你在循环中,建议是这样写
不建议这样写
因为函数调用完之后会释放 这时候静态调用就会一直在 存储内存,释放内存之间切换。io调用很频繁,虽然它的内存占用会比实例化的要小 如果是实例化出来再调用方法的话,就是一直存储在内存中,等该脚本或调用方结束了才会释放这个实例化出来的对象 具体看你怎么想吧,我个人觉得是实例化出来再循环调用会比较节省io调用,速度就会快。
第一个例子: 函数销毁的例子?
此脚本输出:
因此现在很明显,变量$c在函数b()结束后被销毁了. 下面来看第二个例子 被调用方
调用方
输出 333先于44444输出,也就是说,循环结束了才销毁对象 |
|
PHP知识库 最新文章 |
Laravel 下实现 Google 2fa 验证 |
UUCTF WP |
DASCTF10月 web |
XAMPP任意命令执行提升权限漏洞(CVE-2020- |
[GYCTF2020]Easyphp |
iwebsec靶场 代码执行关卡通关笔记 |
多个线程同步执行,多个线程依次执行,多个 |
php 没事记录下常用方法 (TP5.1) |
php之jwt |
2021-09-18 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/13 14:31:22- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |