Импорт классов

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
nepster
Сообщения: 838
Зарегистрирован: 2013.01.02, 03:35

Импорт классов

Сообщение nepster »

Только начал изучать Yii, пожалуйста строго не судите

Такой момент, есть контроллер:

Код: Выделить всё

class cPanelController extends Controller
{
    public function __construct()
    {
        // класс для работы с URL 
        // создал папку library в protected
        // и собственную библиотеку для тест proURL.php
        Yii::import('application.library.proURL');
    }


    public function actionIndex($param = array())
    {
        // обрабатываем URL
        if($param)  $param = proURL::parseUrl($param);
    
        // устанавливаем каркас        
        $this->layout = 'cpanel';
        
        // вид
        $this->render('cpanel/main', array(
            'param'=>$param
        ));
    }
    
} 
тут все работает, все хорошо.

// сама библиотека

Код: Выделить всё

<?php

class proURL
{

    // преобразование URL адреса
    public function validData($string)
    {
        return trim(htmlspecialchars($string));        
    }
    
    
    // преобразование URL адреса
    public static function parseUrl($string)
    {
        # ПРЕОБРАЗУЕТ СТРОКУ ИЗ ПАРАМЕТРОВ 
        # 'action:AddUser,param:act,page:3'
        # В МАССИВ
    
        $string = explode(',',$string);
        $count  = count($string);
        
        if(is_array($string) && $count > 0)
        {
            $result = array();

            for($i=0; $i<$count; $i++)
            {
                if($string[$i])
                {
                    $param = explode(':',$string[$i]);
                    
                    if(isset($param[0]) && isset($param[1]))
                    {
                        $result[self::validData($param[0])] = self::validData($param[1]);
                    }
                }
            }
            
            return $result;
        }
        else
        {
            return array();
        }
    }
} 

Подскажите пожалуйста два момента:
1) правильно ли я осуществляю импорт(подключение) сторонних классов ?
2) в библиотеке метод вызывается только через self::validData(), при этом $this->validData() вызывает ошибку:

Код: Выделить всё

Fatal error: Using $this when not in object context in W:\home\mvc.ru\www\protected\library\proURL.php on line 38
П.С. за такой подход не ругайте, бывает нужно передать много аргументов и порой не знаешь сколько нужно. И что бы не шаманить с роутерами и тп. придумали вот такую вот штукенцию.
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Импорт классов

Сообщение yiijeka »

По поводу ошибки это вам сюда: http://www.php.net/manual/ru/language.o ... ndings.php
Статические методы вызываются без создания экземпляра класса, то псевдо-переменная $this не доступна внутри метода, объявленного статическим.

И всё нормально вы подключаете..
alexZT
Сообщения: 362
Зарегистрирован: 2012.03.06, 11:33
Откуда: Украина/Житомир
Контактная информация:

Re: Импорт классов

Сообщение alexZT »

будете работать с модулями и еще раз будете переписывать свою штуку по разбору урлов, затем будете работать с мультиязычностью и еще раз будете переписывать свой класс, затем понадобиться с якорями поработать - еще раз перепишете, я понимаю ...делов-то :) но может сразу почитать про параметризацию урлов? где-то в вики, сейчас некогда искать есть про урлманагер, его параметры, как строится урл и что уже готового у фреймворка есть по поводу чтения параметров и создания новых урлов согласно правилам в конфигах ;)

тоесть как по мне было бы круче Ваш proUrl отнаследовать от базового класса урлманагера и переписать на свой лад createUrl() и parseUrl()
я человек и мне свойственно ошибаться
yii@conference.jabber.ru
Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: Импорт классов

Сообщение anton44eg »

не переопределяйте конструктор или, хотя бы, не забывайте вызывать родительский
nepster
Сообщения: 838
Зарегистрирован: 2013.01.02, 03:35

Re: Импорт классов

Сообщение nepster »

а можно ли как то self заменить на this ? например если подключать сторонний класс, то что везде нужно менять this на self ?
Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: Импорт классов

Сообщение anton44eg »

вам бы почитать про ООП в ЗРЗ :)
self используется для статических методов и атрибутов классов, а $this для экзампляров классов
nepster
Сообщения: 838
Зарегистрирован: 2013.01.02, 03:35

Re: Импорт классов

Сообщение nepster »

все понял, прочитал. Большое спасибо за ответы
Ответить