2013-12-21 5 views
0

Я искал документ FuelPHP, но не нашел конфигурацию префикса cookie.FuelPHP не может установить префикс файла cookie

Я расширяю класс в топливе/app/classes/extension/cookie.php с помощью этого кода.

namespace Extension; 

class Cookie extends \Fuel\Core\Cookie 
{ 


    private static $config = array(
     'expiration'   => 0, 
     'path'     => '/', 
     'domain'    => null, 
     'secure'    => false, 
     'http_only'    => false, 
     'prefix' => '', // added prefix to cookie. 
    ); 


    public static function _init() 
    { 
     static::$config = array_merge(static::$config, \Fuel\Core\Config::get('cookie', array())); 
    } 


    public static function set($name, $value, $expiration = null, $path = null, $domain = null, $secure = null, $http_only = null) 
    { 
     // add prefix to cookie. 
     $prefix = ''; 
     is_null($prefix) and $prefix = static::$config['prefix']; 
     $name = $prefix . $name; 

     parent::set($name, $value, $expiration, $path, $domain, $secure, $http_only); 

    } 


} 

Когда я звоню \ Расширение \ Cookie :: set ('name', 'value'); Он возвращает ошибку.

Cannot access private property Extension\Cookie::$config 
COREPATH/classes/cookie.php @ line 92 
Line 92 is_null($expiration) and $expiration = static::$config['expiration']; 

Как расширить класс cookie до автоматического добавления имени префикса на набор, получить и удалить?

+0

Теперь мне нужно расширить и скопировать всю функцию набора и изменить ее. Мне это не нравится, потому что, когда FuelPHP обновляет исходный код, мне нужно снова и снова копировать и вставлять его. – vee

ответ

2

Это опечатка, в свойствах FuelPHP, свойства класса никогда не должны определяться как private, так как это будет мешать расширяемости, как вы заметили.

Это исправлено в текущей ветке развития.

+0

Я изменил свой класс расширенного класса на публичный, и теперь он отлично работает. Спасибо. – vee

0

Вам не нужно копировать и вставлять какие-либо коды. Вы можете расширить необходимые методы и сделать что-то вроде этого:

public static function set($name, $value, $expiration = null, $path = null, $domain = null, $secure = null, $http_only = null) 
{ 
    $name = '<my prefix here>' . $name; 
    parent::set($name, $value, $expiration, $path, $domain, $secure, $http_only); 
} 

Приставки, конечно, загруженных с помощью любого метода вы хотите, и вы можете использовать этот метод предваряя добавить префикс необходимых методов.

+0

Не удается получить доступ к частной собственности Расширение \ Cookie :: $ config COREPATH/classes/cookie.php @ line 92 Строка 92 is_null ($ expiration) и $ expiration = static :: $ config ['expiration']; – vee

+0

Ну по ошибке вы пытаетесь получить доступ к частной собственности из другого класса, что запрещено. Я бы предположил, что базовая переменная $ config для файла cookie защищена. Вы захотите взглянуть на класс, который вы распространяете, чтобы узнать, есть ли способ получить конфигурацию. – Uru

Смежные вопросы