2016-02-26 2 views
1

Я хочу, чтобы определить переменную, которая не будет постоянным каждый раз, когда класс называется, но постоянное использование в своих методах, так, например:Использование недопустимых постоянных переменных в классе

<?php 

class ImageUploadModel 
{ 

    public static $file_name = Session::get('id').'_'. md5("abcdefghijklmnopqrstuvxyz123456789") .'_'. uniqid(); 

    public static function blah() 
    { 
     echo SELF::file_name; //I want it to be the same as function blah2 
    } 

    public static function blah2() 
    { 
     echo SELF::file_name; //I want it to be the same as function blah 
    } 

//ended, so the next time it runs I want file_name to be a different value 

Я хочу каждый раз, когда он работает, чтобы быть той же переменной для каждой функции, но когда класс снова вызван, чтобы изменить значение. Как я могу это сделать?

ответ

0

Существует несколько способов добиться этого, но, как правило, вам необходимо сгенерировать file_name перед вызовом blah или blah2. (Кстати, ваш md5 всегда будет то же самое значение, что делает его довольно бесполезно, имо я хотел бы изменить то, что вы хэширования или удалить его полностью..)

<?php 

public static function generateFilename ($id) { 
    self::$file_name = $id . '_' . md5(time()) . '_' . uniqid(); 
} 

Затем, чтобы использовать его:

ImageUploadModel::generateFilename(Session::get('id')); 
ImageUploadModel::blah(); 
ImageUploadModel::blah2(); 

и ImageUploadModel :: $ file_name будут одинаковыми между вызовами «бла».