Как использовать переменную из другой функции? - PullRequest
0 голосов
/ 21 декабря 2018

Я хочу использовать другую переменную из другой функции. ,

Я пытался использовать глобальную переменную, но у меня не получилось.

class UploadController extends Controller
{
    public $file;// declare my $file varable

    function actionIndex()
    {
        $dir = Yii::getPathOfAlias('application.uploads');

        $uploaded = false;
        $model=new Upload();

        if(isset($_POST['Upload']))
        {
            $model->attributes=$_POST['Upload'];
            global $file; //use the $file varable

            $file=CUploadedFile::getInstance($model,'file');
                 //get a instance into $file varable.

            if($model->validate()){
                $uploaded = $file->saveAs($dir.'/'.$file->getName());
            }
        }
        $this->render('index', array(
                'model' => $model,
                'uploaded' => $uploaded,
                'dir' => $dir,
        ));
    }

    public function actionDownload(){

        var_dump($file);exit; //here printed out a null

        $path = Yii::getPathOfAlias('/yiiroot/trackstar/protected/uploads/')."23602414.pdf";

        $upload=new Upload();

        $upload->downloadFile($path);
    }
}

Я объявил $file переменным и назначенэкземпляр в него в functin actionIndex.Затем я хочу использовать переменную $file в функции actionDownload, чтобы распечатать возвращаемое значение $file->getname();

Но я получил нуль, когда я "var_dump ($ file); exit;";в функции actionDownload.Не могли бы вы мне помочь?

Я пытался изменить свой код следующим образом:

function actionIndex () {

        $this->file=CUploadedFile::getInstance($model,'file');

        ...
}

Но в "actionDownload ()".

открытая функция actionDownload () {

    var_dump($this);exit;

...}

Когда я "var_dump ($ this); exit;"как и выше, я не могу получить значение «file».Он распечатан, как показано ниже:

E:\projects\yiiroot\trackstar\protected\controllers\UploadController.php:37:
object(UploadController)[10]
  public 'file' => null
  public 'layout' => string '//layouts/column1' (length=17)
  public 'menu' => 
    array (size=0)
      empty
  public 'breadcrumbs' => 
    array (size=0)
      empty
  public 'defaultAction' => string 'index' (length=5)
  private '_id' (CController) => string 'upload' (length=6)
  private '_action' (CController) => 
    object(CInlineAction)[11]
      private '_id' (CAction) => string 'download' (length=8)
      private '_controller' (CAction) => 
        &object(UploadController)[10]
      private '_e' (CComponent) => null
      private '_m' (CComponent) => null
  private '_pageTitle' (CController) => null
  private '_cachingStack' (CController) => null
  private '_clips' (CController) => null
  private '_dynamicOutput' (CController) => null
  private '_pageStates' (CController) => null
  private '_module' (CController) => null
  private '_widgetStack' (CBaseController) => 
    array (size=0)
      empty
  private '_e' (CComponent) => null
  private '_m' (CComponent) => null

Не могли бы вы помочь мне.

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Вы объявили свойство public $file в своем классе UploadController.Так почему бы просто не использовать ключевое слово $this?Вы можете получить доступ к свойству $file где угодно, просто написав:

$this->file

Например:

$this->file = CUploadedFile::getInstance($model,'file');
0 голосов
/ 21 декабря 2018

Вам не нужно объявлять $file как глобальную переменную.Просто объявите это в своем классе, и тогда вы сможете использовать его в любой функции класса с ключевым словом $this, так как $this относится к классу, в котором вы находитесь. Как и в actionIndex function.

 $this->file=CUploadedFile::getInstance($model,'file');

И в actionDownload()

public function actionDownload(){

    var_dump($this->file);exit; //here printed out a null

    $path = Yii::getPathOfAlias('/yiiroot/trackstar/protected/uploads/')."23602414.pdf";

    $upload=new Upload();

    $upload->downloadFile($path);
}

Что означает переменная $ в PHP?

Вот еще одна ссылка вопрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...