dsgdfh302506 2018-07-03 19:50
浏览 109
已采纳

如何从PHP中的另一个文件替换方法值?

I have a class in fileA.php like so:

class Test {
    private foo;

    public function array() {
        $this->$foo = array ( 'a', 'b', 'c', 'd', 'e' );
        return $foo;
    }
}

I want to change the array returned by the method to:

array('x', 'y', 'z')

Not sure if this the right way to about it, but this is what I tried in fileB.php:

require_once('fileA.php');

class TestB extends Test {    
     public function array() {
        $this->$foo = array('x', 'y', 'z');
        return $foo;
     }
 }

Is it possible to make this modification? Any help will be greatly appreciated.

Thanks

  • 写回答

2条回答 默认 最新

  • douhoulei4706 2018-07-03 19:54
    关注

    $foo is a private property so you cannot access it from any child classes. Only protected and public properties can be accessed from child classes.

    Since array() is a public method, you can overwrite that method and return a different array without modifying or accessing $foo.

    class TestB extends Test {    
         public function array() {
            return array('x', 'y', 'z');
         }
    }
    

    But this would not affect foo for any other methods that use it.

    Keep in mind, you must access class properties from within methods as $this->name (ex. $this->foo), not $foo or $this->$foo.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效