草庐IT

EXPECT_CALL

全部标签

PHP 将 "Call to a member function on a non-object"变成异常

当我运行“Behat”步骤时,Behaterrorhandler将“尝试获取非对象的属性”错误转换为异常。这非常有用,因为它会导致步骤被标记为失败,并允许测试运行在下一个场景中继续。但是,“调用非对象上的成员函数”错误是致命的,会立即停止测试执行(包括中止将结果写入xml)。这是没有帮助的。我的问题是:这两个错误有什么区别?它们是不同的“错误级别”吗?在哪里记录?我搜索了PHP站点和Google,找不到规范引用,只有很多关于调试每个错误的特定实例的问题。有没有办法将后一个错误转换为异常,而不是完全停止脚本?在我看来,用“->”取消引用“null”不会是“无法从中恢复的错误,例如内存分配

PHP __call 与 method_exists

我正在处理的项目包含类似于call_user_func(_array)的包装器,它在执行前进行一些检查。其中一项检查是method_exists(如果提供的第一个参数是类的实例,第二个是方法名称)另一个是_callable。如果其中一项检查失败,该函数将抛出异常。我的代码包含一个带有函数名称(setFoo、setBar等)的数组和用于重载的php魔法函数(__call),它处理某些变量(最好是某些数组元素)的设置、替换和删除。问题:如果函数未定义,method_exists将返回false。如果__call函数正确处理请求,我是否有机会获得true? 最佳答

PHP __call 与 method_exists

我正在处理的项目包含类似于call_user_func(_array)的包装器,它在执行前进行一些检查。其中一项检查是method_exists(如果提供的第一个参数是类的实例,第二个是方法名称)另一个是_callable。如果其中一项检查失败,该函数将抛出异常。我的代码包含一个带有函数名称(setFoo、setBar等)的数组和用于重载的php魔法函数(__call),它处理某些变量(最好是某些数组元素)的设置、替换和删除。问题:如果函数未定义,method_exists将返回false。如果__call函数正确处理请求,我是否有机会获得true? 最佳答

php - Bcrypt 在 Lumen 5.4 : Call to undefined function bcrypt() 中不工作

我创建了一个新的Lumen5.4项目并尝试播种一些数据。在播种机中,我使用bcrypt来散列密码。但是当我运行phpartisandb:seed时,我得到了这个错误:Calltoundefinedfunctionbcrypt()为什么我不能在Lumen中使用bcrypt?我以前在Laravel中使用过它。 最佳答案 你可以试试:app('hash')->make('yourpassword'); 关于php-Bcrypt在Lumen5.4:Calltoundefinedfunctionb

php - Bcrypt 在 Lumen 5.4 : Call to undefined function bcrypt() 中不工作

我创建了一个新的Lumen5.4项目并尝试播种一些数据。在播种机中,我使用bcrypt来散列密码。但是当我运行phpartisandb:seed时,我得到了这个错误:Calltoundefinedfunctionbcrypt()为什么我不能在Lumen中使用bcrypt?我以前在Laravel中使用过它。 最佳答案 你可以试试:app('hash')->make('yourpassword'); 关于php-Bcrypt在Lumen5.4:Calltoundefinedfunctionb

php - fatal error : Call to undefined function openssl_random_pseudo_bytes()

我在尝试运行我的PHP单元测试时遇到此异常:Fatalerror:Calltoundefinedfunctionopenssl_random_pseudo_bytes()这是什么意思? 最佳答案 我遇到了同样的问题。我通过编辑我的php.ini文件解决了这个问题-将;extension=php_openssl.dll更改为extension=php_openssl.dll。(对于我的安装,我的php.ini文件位于我的P:\ProgramFiles\EasyPHP-12.1\conf_files\目录中。)

php - fatal error : Call to undefined function openssl_random_pseudo_bytes()

我在尝试运行我的PHP单元测试时遇到此异常:Fatalerror:Calltoundefinedfunctionopenssl_random_pseudo_bytes()这是什么意思? 最佳答案 我遇到了同样的问题。我通过编辑我的php.ini文件解决了这个问题-将;extension=php_openssl.dll更改为extension=php_openssl.dll。(对于我的安装,我的php.ini文件位于我的P:\ProgramFiles\EasyPHP-12.1\conf_files\目录中。)

PHP forward_static_call 与 call_user_func

forward_static_call和call_user_func有什么区别?同样的问题适用于forward_static_call_array和call_user_func_array 最佳答案 不同之处在于,forward_static_call不会重置“被调用的类”信息,如果在类层次结构中上升并显式命名一个类,而call_user_func会重置信息这些情况(但如果使用parent、static或self仍然不会重置它)。例子:请注意,forward_static_call拒绝转发,如果向下类层次结构:最后,请注意forwa

PHP forward_static_call 与 call_user_func

forward_static_call和call_user_func有什么区别?同样的问题适用于forward_static_call_array和call_user_func_array 最佳答案 不同之处在于,forward_static_call不会重置“被调用的类”信息,如果在类层次结构中上升并显式命名一个类,而call_user_func会重置信息这些情况(但如果使用parent、static或self仍然不会重置它)。例子:请注意,forward_static_call拒绝转发,如果向下类层次结构:最后,请注意forwa

php - 使用 Artisan::call() 传递非选项参数

在shell中,我可以像这样创建一个数据库迁移(例如):./artisanmigrate:make--table="mytable"mymigration使用Artisan::call()我不知道如何传递非参数参数(本例中为“mymigration”)。我尝试了以下代码的许多变体:Artisan::call('db:migrate',['--table'=>'mytable','mymigration'])有人有什么想法吗?在此期间,我一直在使用shell_exec('./artisan...')但我对这种方法不满意。 最佳答案 L