jjzjj

Destruct

全部标签

php - __destruct() 和 __call() 创建无限循环

我大大简化了我的代码,但我正在做的是这样的:classApp{protected$apps=[];publicfunction__construct($name,$dependencies){$this->name=$name;$apps=[];foreach($dependenciesas$dependName){$apps[$name]=$dependName($this);//returnsaninstanceofApp}$this->apps=$apps;}publicfunction__destruct(){foreach($this->appsas$dep){$result

Php Destruct 被调用两次

下面的代码说明了destruct()被调用了两次。我想知道为什么?classA{functionhi(){echo'hi';}function__destruct(){echo'destroy';}}classB{public$this_='';function__construct(){$this->this_=newA;}function__call($method,$params){returncall_user_func_array(array($this->this_,$method),$params);}}$b=newB;$b->__destruct();输出:destro

php - 脚本在魔术方法 __destruct() 中失去权限

我试图在对象实例化时创建一个文件,并在对象销毁时创建另一个文件。代码如下:classFoo{publicfunction__construct(){file_put_contents('a_construct.txt','c');}publicfunction__destruct(){file_put_contents('a_destruct.txt','d');}}通常会创建a_construct.txt文件。但是在创建a_destruct.txt文件时,它的行为很奇怪。如果我运行以下代码,“a_destruct”文件不会被创建。$foo=newFoo();我得到这个错误:Warni

php - 为什么 getcwd() 返回/in __destruct()?

我刚刚注意到如果在__destruct()魔术函数中调用getcwd()会返回“/”,而在任何其他方法中它会返回预期的路径。你对此有解释吗? 最佳答案 这是一个SAPI行为“在脚本关闭期间调用的析构函数已经发送了HTTPheader。脚本关闭阶段的工作目录可能与某些SAPI(例如Apache)不同。”来自http://php.net/manual/en/language.oop5.decon.php但是正如其他答案中提到的那样,有很多方法可以获取当前的相对路径。如果您在运行时更改了它,请务必在对象内部的某处进行注释。

php - 发送 : How to correctly destruct a custom object in PHP 7?

我正在学习PHP扩展编写,以便使一些旧的扩展可以与PHP7一起使用。我试图修改来自http://devzone.zend.com/1435/wrapping-c-classes-in-a-php-extension/的示例扩展名但它在破坏自定义对象时一直导致段错误。所有其他功能都正常工作。(在我的代码中Car被BDict替换了。)这是我的代码:#defineZ_BDICT_OBJ_P(zv)php_bdict_object_fetch_object(Z_OBJ_P(zv))zend_object_handlersbdict_object_handlers;typedefstruct_b

php - 为什么 phpunit 不在模拟类中运行 __destruct() 以及如何强制运行它?

代码会解释一切:expectOutputString('Itworksgreat!');}publicfunctiontestDestructorOnMockedClass(){$a=$this->getMock('A',array('someNonExistingMethod'));//Itunset($a);//worksecho"great!";//great!$this->expectOutputString('Itworksgreat!');}}classA{publicfunction__construct(){echo"It";}publicfunction__destr

php - __destruct PHP 的可见性

__destruct()函数的“可见性”应该是公开的还是其他?我正在尝试为我的团队编写标准文档,然后出现了这个问题。 最佳答案 除了MarkBiek的回答:__destruct()函数必须公开。否则,该函数将不会在脚本关闭时执行:Warning:CalltoprotectedMyChild1::__destruct()fromcontext''duringshutdownignoredinUnknownonline0Warning:CalltoprivateMyChild2::__destruct()fromcontext''dur

php - __destruct PHP 的可见性

__destruct()函数的“可见性”应该是公开的还是其他?我正在尝试为我的团队编写标准文档,然后出现了这个问题。 最佳答案 除了MarkBiek的回答:__destruct()函数必须公开。否则,该函数将不会在脚本关闭时执行:Warning:CalltoprotectedMyChild1::__destruct()fromcontext''duringshutdownignoredinUnknownonline0Warning:CalltoprivateMyChild2::__destruct()fromcontext''dur

objective-c - 有没有办法从应用程序本身到 'self-destruct'?

我想要从内部卸载应用程序的能力。示例:弹出UIAlertView并提示“此应用程序已过期”。用户点击“确定”,然后应用程序继续关闭并将其自身从设备中删除。有什么办法吗? 最佳答案 我认为没有办法从手机本身删除该应用程序。但是,您可以使用代码终止应用程序的执行,exit(0);也不鼓励这样做,因为您不应该在用户不知情的情况下突然退出应用程序。但是,如果您显示警报并退出该应用程序,那没关系,并且确实有必要退出该应用程序。 关于objective-c-有没有办法从应用程序本身到'self-de

php - 在 __destruct() 上更新数据库?

你认为这是个好主意吗?假设您有一个应用程序组件,其他组件使用它来检索/更新数据库中的数据。它基本上是一个具有get()、set()、update()方法的类。如果该组件在调用时仅在其属性中更新(或设置)数据,并且在__destruct上更新数据库,这是否是个好主意?还是应该在每次设置/更新调用时直接更新数据库? 最佳答案 在对象破坏时更新数据库对我来说有点像软件sideeffect.也就是说,发生在意想不到的、有些不明确的地方的Action。通过查看您的代码,在调用__destruct()时数据库操作正在发生并不明显,即使您显式调用