【问题标题】:Redefining PHP function in PHP CLI interpreter在 PHP CLI 解释器中重新定义 PHP 函数
【发布时间】:2014-02-24 12:46:24
【问题描述】:

在使用 PHP CLI 解释器时,如何重新定义有错误的函数。例如,这里的原始函数声明缺少换行符,我想修复它:

$ php -a
Interactive shell

php > function drinkBeer(){
php {     echo "Carlsburg";
php { }
php > 
php > drinkBeer();
Carlsburgphp > 
php > 
php > function drinkBeer(){
php {     echo "Carlsburg" . PHP_EOL;
php { }
PHP Fatal error:  Cannot redeclare drinkBeer() (previously declared in php shell code:2) in php shell code on line 3
php >

我们看到类似的问题问how to redefine a function when running a PHP script 但是没有一个类似的问题涉及在 PHP CLI 解释器上重新定义函数的问题。

例如,Python 解释器允许这样做:

$ python3

>>> def drinkBeer():
...  print('Carlsburg')
... 
>>> drinkBeer()
Carlsburg
>>>
>>> def drinkBeer():
...  print("You've had enough!")
... 
>>> drinkBeer()
You've had enough!
>>>

【问题讨论】:

  • 为什么解释器很重要?语言是相同的,您根本无法访问像 $_SERVER['HTTP_HOST'] 这样的 HTTP 内容。
  • 如果您有可能犯错误,请不要使用-a 选项。将 php 代码保存到文件中,例如 test.php 并像这样运行它 php test.php
  • 使用向上和向下箭头编辑之前插入的代码。
  • @RiggsFolly:考虑到犯错的可能性是E = 1/2 m v^2而我有太多m,所以我犯了很多错误!
  • 我们都这样做。我并不是说只有你犯了错误,只是如果你不必每次都编写 100% 的脚本,那么更容易修复它们!

标签: php command-line-interface


【解决方案1】:

如果您使用的是 PHP 5.3 或更新版本,您可以执行以下操作

$func = function(){ echo "Foo"; };
$func(); //to execute
$func = function(){ echo "Bar"; };
$func(); // will echo Bar

【讨论】:

  • 谢谢哈泽姆!虽然它不能解决问题,但您确实提供了一种创造性的解决方法。
  • 这对在 CLI 模式下使用 PHP 很有帮助
【解决方案2】:

有关面向函数的编程,请参阅此内容 http://www.php.net/manual/en/function.override-function.php

表单面向对象,在子类中声明函数即可使用!

希望对你有帮助...

祝你好运!

【讨论】:

    猜你喜欢
    • 2011-02-08
    • 1970-01-01
    • 2015-03-16
    • 2023-03-07
    • 1970-01-01
    • 2011-01-20
    • 2011-10-19
    • 1970-01-01
    • 2017-05-22
    相关资源
    最近更新 更多