0

我正在使用一个插件,其中有一个像这样的受保护功能

<?php

class CustomUploadHandler extends UploadHandler {

protected function get_user_id() {

              //If I manually enter a value here, the value passes along
      return ('myvariable'); 

   }
 }

?>

然而,当我制作一个变量时

<?php  $myvar = 'myvariable';  ?>

并尝试将其插入到这样的函数中

<?php

class CustomUploadHandler extends UploadHandler {

protected function get_user_id() {

              //If I use a variable, the value is lost
      return ($myvar); 

   }
 }

?>

它完全失败了......我不熟悉受保护的类以及如何return()工作,因此将不胜感激。

我尝试了很多行代码,例如

print $myvar; return $myvar; echo $myvar;有和没有()

4

2 回答 2

6

不要global通过关键字引入全局状态。你将迎来一个痛苦的世界。

相反,在创建类时或使用 setter将依赖项(值,在这种情况下为用户 ID )注入到类中。

class CustomUploadHandler extends UploadHandler
{

    private $user_id;

    protected function get_user_id()
    {
        return $this->user_id;
    }

    // setter injection; the value is
    // passed via the method when called
    // at any time
    public function set_user_id($user_id)
    {
        $this->user_id = $user_id;
    }

    // constructor injection; the value is
    // passed via the constructor when a new
    // instance is created
    public function __construct($user_id)
    {
        $this->set_user_id($user_id);
    }

}

然后当你有这个类的一个实例时:

// creates and sets $user_id = 42
$customUploadHandler = new CustomUploadHandler(42);

// sets $user_id = 77
$customUploadHandler->set_user_id(77);
于 2013-10-18T02:41:14.280 回答
0

Protected表示只有类本身、定义函数的类的父类和子类才能使用该函数。因此,这取决于您调用该函数的位置以使其工作。不带括号的 return 语句应该没问题。

于 2013-10-18T00:15:55.337 回答