- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试使用 spl_autoload_register
并且我想创建一个 if()
语句来检查类方法是否已经注册。
例如:
if (spl_autoload_function(array($this, '_loadClass'))
// Then do nothing
else
// Then run spl_autoload_register(array($this, '_loadClass));
类似上面的代码/方法是否可行?
最佳答案
I am trying to do an autoloader and I want to create an if statement that will check if the class method as already been registered.
你不应该。不需要做 if 语句; spl_autoload_register
将忽略具有相同参数的第二次调用:
<?php
$foo = function( $class ) {
return false;
};
spl_autoload_register( $foo );
var_dump( spl_autoload_functions( ) );
spl_autoload_register( $foo );
var_dump( spl_autoload_functions( ) );
输出显示,虽然我们调用了 spl_autoload_register
两次,但仍然只有 一个 自动加载器;
array(1) {
[0]=>
object(Closure)#1 (1) {
["parameter"]=>
array(1) {
["$class"]=>
string(10) "<required>"
}
}
}
array(1) {
[0]=>
object(Closure)#1 (1) {
["parameter"]=>
array(1) {
["$class"]=>
string(10) "<required>"
}
}
}
如果你想确保一个类不会自己注册两次,你当然可以在某种静态成员中设置它;
<?php
class Foo {
protected static $registered = false;
public function register( ) {
if( self::$registered !== false ) {
return;
}
echo "spl_autoload_register( \$this, '_loadClass' );\n";
self::$registered = true;
}
}
$foo = new Foo( );
$foo->register( );
$bar = new Foo( );
$bar->register( );
输出显然是一行:
spl_autoload_register( $this, '_loadClass' );
也就是说,您为什么要编写自己的自动加载器?已经有很多,很难相信没有一个符合您的要求。
关于php - 如何检查函数是否已存在于 SPL 堆栈中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9461113/
普通数组、SPL 数组和 SPL 数据存储之间的区别、*用法*场景是什么?如果有人能给出一些使用 SPLarray 和 SPL objectsrorage 的实际例子,那就太好了。 最佳答案 SplF
在 java 和 C++ 中,当我们不知道大小时 - 不像在 PHP 中那样使用数组,而是使用 linkedList 等。 在 PHP 中存在 SPL,但大多数时候程序员使用数组,为什么(因为人们不了
数据库语言的目标 要说清这个目标,先要理解数据库是做什么的。 数据库这个软件,名字中有个“库”字,会让人觉得它主要是为了存储的。其实不然,数据库实现的重要功能有两条:计算、事务!也就是我们常说的 OL
数据库语言的目标 要说清这个目标,先要理解数据库是做什么的。 数据库这个软件,名字中有个“库”字,会让人觉得它主要是为了存储的。其实不然,数据库实现的重要功能有两条:计算、事务!也就是我们常说的OLA
需要的MAVEN依赖 org.springframework.boot spring-boot-starter-parent 2.3.2.RELEAS
下载和安装 http://www.raqsoft.com.cn/download/download-jsq 拿到安装包后执行安装程序,按提示逐步进行: 运行安装程序 按照提示,依次点击下一步,接受许可
SPL官网 http://www.scudata.com.cn/ 介绍 业务逻辑经常包含较复杂的流程和计算,同时涉及数据库的读写。由于授权麻烦、影响数据库安全、无法迁移、技术要求高、编写困难等原因,很
下载和安装 http://www.raqsoft.com.cn/download/download-jsq 拿到安装包后执行安装程序,按提示逐步进行: 运行安装程序 按照提示,依次点击下一步,接受许可
SPL官网 http://www.scudata.com.cn/ 介绍 业务逻辑经常包含较复杂的流程和计算,同时涉及数据库的读写。由于授权麻烦、影响数据库安全、无法迁移、技术要求高、编写困难等原因,很
我知道要计算声压级(db SPL)是 20 * log10 (amplitude) 但是我在这里不明白的是值的范围。如果是16位带符号PCM音频,则最小值为-90,最大值为0: [20 * log10
在服务器端的 include_path 中,我有一个 pear 目录的引用,位于“/usr/share/pear/”中。在我的应用程序中,我包含来自公共(public)库的文件,这些文件位于“/usr
通过网络浏览后,我设法构建了一个有效的 SPL_Autoload 并在其中使用了命名空间。它确实有效,但与我正在查看的所有示例和文档相比,它对我来说也有点奇怪。我是否使用了所有内容并正确理解了它? $
我正在研究标准 PHP 库 (SPL)。以前只用过数组,现在才发现PHP有这么多标准类。但是说明书上并没有说推荐使用与否。例如,他们明确建议使用 foreach 构造来迭代数组,因为它更快。那么这个图
本文实例讲述了PHP标准库 (SPL)——Countable用法。分享给大家供大家参考,具体如下: 类实现 Countable 可被用于 count() 函数. 接口摘要
我对这三个问题的概念很迷茫 为什么我们需要辅助程序加载器? 它在哪个内存中加载和重定位? 系统内存和RAM有什么区别? 据我通过阅读链接了解到的是.. 当系统内部存储器不能完全容纳 uboot 时需要
有没有办法在 PHP 中从 SPL 自动加载器抛出异常以防失败?它似乎不能在 PHP 5.2.11 下工作。 class SPLAutoLoader{ public static functi
我正在为如何使用 SPL 迭代器删除 PHP 中的空目录树而苦恼。考虑以下目录结构,其中所有目录都是空的: /topdir level1 level2 我试过以下方法: $it =
如何使用 SPL(可能使用 RecursiveDirectoryIterator 和 RecursiveIteratorIterator)检索完整的目录树? 最佳答案 默认情况下,RecursiveI
我可以在 http://www.php.net/~helly/php/ext/spl/... 找到定义文件,但我想扩展 DirectoryIterator和 SplFileInfo在存储在数据库上的虚
我正在尝试使用 spl_autoload_register 并且我想创建一个 if() 语句来检查类方法是否已经注册。 例如: if (spl_autoload_function(array($thi
我是一名优秀的程序员,十分优秀!