草庐IT

spl_autoload_register

全部标签

php - register_shutdown_function 将引用转换为值?

我正在尝试使用一个关闭函数,该函数使用注册后动态更改的值。我的理解是,通过引用传递变量将允许代码后面部分的更改影响关闭调用。下面的代码证明情况并非如此:我是不是误解了应该怎么做?将引用传递转换为值传递是注册函数的预期行为吗?PHP版本5.5.9 最佳答案 一种可能的解决方案是使用匿名函数(在本例中是一个闭包,捕获了$x作为引用):$x=0;$shutdown=function()use(&$x){echo$x;};register_shutdown_function($shutdown);$x=1;exit();演示:http://

php - 调用类常量时,PHP Autoloader 会加载吗?

我有一个定义了一些类常量的类。为了简单起见,它看起来像这个假类。classMyThing{constBORIS='Yeltsin';}我正在注册类所在的目录。AutoLoader::registerDirectory('lib');我正在使用PHP的自动加载器并且它按预期工作,除了当我试图调用此类const时。如果我这样做。MyThing::BORIS我明白了。Undefinedclassconstant'BORIS'我认为自动加载器应该是这样工作的,但我想知道我是否正确。我正在使用这个AutoLoader类,这是我开始在这家公司工作之前选择的,但它似乎有效。isDir()&&!$fi

php - Zend Resource Autoloader 不适用于命名空间

我在ZendFramework上遇到了这种自动加载问题。基本上在库文件夹中有一个名为LunaZend的文件夹。LunaZend有一些可以在ZendFramework中使用的类,这些类有namespace并且必须仅通过调用namespace名称自动加载。命名空间就像LunaZend\DB,LunaZend\Etc...在Bootstrap中,我有一个_initAutoLoadNS函数,它有$resource=newZend_Loader_Autoloader_Resource(array('basePath'=>APPLICATION_PATH.'/../library/LunaZend

PHP: AutoLoader 是否能够在单个 php 文件中加载多个类?

引自AutoloadingClasses:Manydeveloperswritingobject-orientedapplicationscreateonePHPsourcefileperclassdefinition.Oneofthebiggestannoyancesishavingtowritealonglistofneededincludesatthebeginningofeachscript(oneforeachclass).InPHP5,thisisnolongernecessary.Thespl_autoload_register()functionregistersany

php - 在从源代码编译的 PHP 7.1 上安装 SPL_Types

我正在尝试在从源代码编译的PHP7.1.8中安装SPL_Types扩展。我尝试使用sudopeclinstallSPL_Types并从源代码编译扩展,但我得到以下输出:https://mega.nz/#!WE5WjajQ!QyVxMYWrsUiDF6Gq09psYBpR5Y336v26PusnlBNd8bg我知道发布链接并不酷,但我无法将空洞输出放在这里。 最佳答案 此扩展现已过时,无法使用PHP7.x构建。此库的最新版本released2012年,仅支持PHP5.4。native标量类型声明支持使此扩展几乎无用(可能除了SplEn

php - 什么替换了 Smarty 3 中的 register_modifier

我正在考虑从Smarty2升级到Smarty3,并使用注册了少量修改器register_modifier($ModifierName,$FunctionName)我在文档中找不到指示我应该将这些更改为什么的地方,我试过了。$Smarty->Register->Modifier(但是报错。谁能指出我的文档。 最佳答案 原来它被移到了registerPlugin()http://www.smarty.net/docs/en/api.register.plugin.tpl 关于php-什么替换

php - 新的 Laravel 项目抛出 500 错误 : require(): Failed opening required autoload. php

我正在尝试学习laravel并尝试在我的服务器上进行设置。我已严格按照本教程中的所有说明进行操作,同时根据我自己的目录名称更改了一些变量:http://davidmyers.name/post/laravel-on-digital-ocean只有当我访问laravel项目的公用文件夹时才会抛出500错误。当我尝试访问任何其他页面(例如PHPMyAdmin或任何其他PHP或HTML页面)时,该页面会正常显示。是否有任何我可能遗漏的内容未包含在我引用的教程中?我仔细检查了我是否正确执行了所有步骤。此外,在目录中运行composerupdate会抛出此错误:[RuntimeException

php - register_shutdown_function() 和 die()

如果我的脚本在register_shutdown_function()中被die()取消了,我能以某种方式检查吗??像这样:register_shutdown_function('shutdown');die('Callingdie()');functionshutdown(){if(???){//Scriptwascanceledbydie()}}注意:在我的网站上,我使用Smarty。所以也许检查一下,是否调用了$smarty->display()或类似的东西? 最佳答案 有点……但您不一定喜欢它的完成方式。因为没有钩子(Hoo

php - spl_autoload_register 不工作

我在主目录中创建了5个文件夹,其中包含5个类(Ad_Class、Blocked_Class、Friend_Class、Image_Class、Profile_Class)。我还在提到的文件夹中创建了相应的类,并使用与文件夹相同的名称。即,如果文件夹名称为Ad_Class,则文件夹中的类也与“类Ad_Class”中的文件夹名称相同。在index.php文件中我写了如下代码:functionAd_Class($name){include"Ad_Class/$name.php";}functionBlocked_Class($name){include"Blocked_Class/$name

php - ZF2 : autoloading libraries without namespaces

以前我只使用第三方库,这些库将命名空间与ZendFramework2一起使用。现在我需要使用alibrary不使用命名空间,我似乎无法让它工作。我通过Composer安装它,并且它安装在vendor目录中。我正在尝试按如下方式使用它:$obj=new\SEOstats();结果是一个fatalerror,表示找不到该类。我曾尝试手动配置StandardAutoloader,但到目前为止还没有成功。我以为通过Composer安装时会自动为我完成自动加载,但我想如果没有namespace,情况并非如此?我没有在Composer生成的自动加载文件中看到任何对库的引用。我想我必须手动完成-但怎