php 后期绑定,PHP __DIR__评估运行时(后期绑定)?
是否有可能获得PHP文件的位置,在运行时进行评估?我正在寻找类似于魔术常量__DIR__的东西,但在运行时进行评估,作为后期绑定.与自我和静态相似的区别:
__DIR__ ~ self
??? ~ static
我的目标是使用__DIR__在抽象类中定义一个方法,该方法将分别针对每个继承类进行评估.例:
abstract class Parent {
protected function getDir() {
// return __DIR__; // does not work
return <>; //
}
}
class Heir extends Parent {
public function doSomething() {
$heirDirectory = $this->getDir();
doStuff($heirDirectory);
}
}
显然,仅当Parent和Heir位于不同目录中时才会出现此问题.请考虑到这一点.此外,在各种Heir类中反复定义getDir似乎并不是选项,这就是为什么我们有继承…
解决方法:
您可以在Parent类的getDir方法中添加以下代码
$reflector = new ReflectionClass(get_class($this));
$filename = $reflector->getFileName();
return dirname($filename);
您的父类将如下所示
abstract class Parent {
protected function getDir() {
$reflector = new ReflectionClass(get_class($this));
$filename = $reflector->getFileName();
return dirname($filename);
}
}
希望它会有所帮助.
标签:php,inheritance,dir,late-binding
来源: https://codeday.me/bug/20190517/1121762.html
php 后期绑定,PHP __DIR__评估运行时(后期绑定)?相关推荐
- 运行时应用自我保护(RASP):应用安全的自我修养
应用程序已经成为网络黑客想要渗透到企业内部的绝佳目标.因为他们知道如果能发现并利用应用程序的漏洞,他们就有超过三分之一的机会成功入侵.更重要的是,发现应用程序漏洞的可能性也很大.Contrast Se ...
- C专家编程 第11章 你懂得C,所以C++不再话下 11.13 多态---运行时绑定
多态---运行时绑定 多态(polymorphism)源于希腊语,意思是"多种形状".在C++中,它的意思是支持相关的对象具有不同的成员函数(但原型相同),并允许对象与适当 ...
- ActiveReports中如何在后台导出运行时绑定数据源报表
ActiveReports支持运行时绑定数据源功能,这种绑定数据源方法使用较为普及,然而很多系统中都需要在后台导出报表文件,所以用户就很困惑,ActiveReports中如何在后台导出运行时绑定数据源 ...
- 无法对 null 引用执行运行时绑定_你真的懂this吗?聊聊默认绑定,隐式绑定,显示绑定,new绑定...
https://github.com/YvetteLau/Blog/issues/6 this关键字是JavaScript中最复杂的机制之一,是一个特别的关键字,被自动定义在所有函数的作用域中,但是相 ...
- 通过运行时单步调试弄清楚[(ngModel)]的双向绑定的工作原理
Component HTML: <input type="text" maxlength="40" nz-input placeholder=" ...
- “项目运行时出错,无法启动调试。绑定句柄无效”的解决办法
突然发现VS2005简体中文版不能调试,提示:"项目运行时出错,无法启动调试.绑定句柄无效." 结果重装.NET2.0也无效,又重装VS2005一次也无效,费了很大的周折,终于在 ...
- Python: 从PYTORCH导出模型到ONNX,并使用ONNX运行时运行它
Python: 从PYTORCH导出模型到ONNX,并使用ONNX运行时运行它 本教程我们将描述如何将PyTorch中定义的模型转换为ONNX格式,然后使用ONNX运行时运行它. ONNX运行时是一个 ...
- 理解和选择运行时安全自保护-RASP
定义RASP 运行时应用自我保护(RASP)是一种嵌入到应用程序或应用程序运行时环境的安全技术,在应用层检查请求,实时检测攻击和滥用. RASP产品通常包含以下功能: 通常在应用程序上下文中进行解包和 ...
- 【JVM】运行时数据区介绍,程序计数器和虚拟机栈详解
JVM越来越是Java面试中的重头戏,今天来总结一下JVM运行时数据区的相关内容. 文章目录 JVM运行时数据区 JVM运行时数据区内部结构 程序计数器(PC寄存器) 程序计数器的介绍 PC寄存器的实 ...
最新文章
- Android笔记三十三.BroadcastReceiver使用
- c# typeof() 和 GetType()的区别
- 重拾CCNA,学习笔记持续更新ing......(4)
- 程序员修炼之路:你该知道的 7 个必经阶段
- 如何共享自己的mysql
- numpy列相加_Python数据分析入门:NumPy基础:数组与向量化计算
- 《系统集成项目管理工程师》必背100个知识点-02项目组织方式和特点
- es常用curl命令
- 软件:9款超级实用的办公软件,值得收藏!
- 用画小狗的方法来解释Java中的值传递
- 哈佛第二、哥大第三,第一还是它!2020USNews美国大学排名发布!
- 农村人深加工红薯,一招增值数倍,机器一条龙操作省人力
- PHP是4个进程还是五个,PHP多进程(4) :内部多进程
- Python中类和对象的概念,面向对象编程
- LeetCode 138. Copy List with Random Pointer
- k2路由器linux系统,【路由器】斐讯K1/K2刷专版潘多拉固件以及教程
- 抖音旋转很炫的html,火爆抖音的旋转时钟屏保,超酷超炫的
- 以前计算机学生都要学五笔吗,为什么曾经很火的五笔,还是给了拼音输入法?其实原因很简单...
- 方正平台(企业级应用的开发平台)
- VS code 快速配置C语言编写环境