Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Маршрутизация, Вызов метода класса 
V
    Опции темы
Just123
Дата 23.8.2010, 17:17 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 9.12.2007
Где: localhost

Репутация: нет
Всего: нет



Здравствуйте, помогите пожалуйста с решением одной проблемы.

Пишу CMS со следующей системой маршрутизации:

URL имеет вид 

http://site.ru/НАЗВАНИЕ_КОМПОНЕНТА/НАЗВАНИЕ_МЕТОДА/ПАРАМЕТР_МЕТОДА1/ПАРАМЕТР_МЕТОДА2/и т.д./

Роутер из URL вытаскивает НАЗВАНИЕ_КОМПОНЕНТА и подгружает его.

Структура компонента:

Код

Class Hello {

     funtcion index() {
             echo "Hello";
     }
 
     function whats_up($var) {
             echo "What up $var?";

    }

}


Подгрузить компонент понятно как, но как вызвать метод компонента?

Надеюсь понятно объяснил, что требуется.   smile 
Заранее больше спасибо за советы и помощь.
PM MAIL   Вверх
StachelDraht
Дата 23.8.2010, 17:22 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Не Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 19.1.2006

Репутация: 1
Всего: 1



может быть проще использовать какой нибудь фрэймворк 
PM MAIL   Вверх
overmetallist
  Дата 23.8.2010, 17:54 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 19.8.2010

Репутация: нет
Всего: нет



вот smile 
Код

$component->whats_up=$callback;

$callback — это корректный callback-вызов PHP 

Yii-приложения состоят из компонентов–объектов, созданных согласно спецификациям. Компонент (component) — это экземпляр класса CComponent или производного от него. Использование компонента в основном включает доступ к его свойствам, а также вызов и обработку его событий. Базовый класс CComponent  устанавливает то, как определяются свойства и события.

Код

$component->whats_up($var);
// выражение ниже приведет к вызову исключения
$component->test();
$component->whats_up($var);
// здесь все будет работать нормально


Это сообщение отредактировал(а) overmetallist - 23.8.2010, 17:57
PM MAIL WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Just123
Дата 23.8.2010, 18:34 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 9.12.2007
Где: localhost

Репутация: нет
Всего: нет



Цитата

может быть проще использовать какой нибудь фрэймворк 

Это не рабочий проект, пишу ради опыта.


overmetallist, не уверен, что до конца понял :( Можно какой-нибудь пример на пальцах, пожалуйста. В любом случаи, большое спасибо.
PM MAIL   Вверх
bars80080
Дата 23.8.2010, 18:56 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



посмотрите в сторону call_user_func() или чего-то аналогичного
PM MAIL WWW   Вверх
overmetallist
Дата 23.8.2010, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 19.8.2010

Репутация: нет
Всего: нет



можно и так как предложил bars80080 : smile Проверил, выводит What up ? , замучаю свой хостинг проверками этих всех скриптов smile 
Код

<?php
class Hello {
  function whats_up() 
  {
    echo "What up $var?\n";
  }
}

$classname = "Hello";

call_user_func(array($classname, 'whats_up'));
?>

вот еще намудрил:
Код

<?php
class Hello {
  var $wup;
  const CONST_VALUE = 'What up?';
  function whats_up() 
  {
    echo "What up?\n";
  }
  public function whats($w){
   echo $w;
  }
   public function up(){
   $this->whats("What up?");
  }
}
$classname = "Hello";
call_user_func(array($classname, 'whats_up'));
$object = new Hello;
$object->whats_up();
echo Hello::CONST_VALUE;
$object2 = new Hello;
$object2->up();
?>


Это сообщение отредактировал(а) overmetallist - 23.8.2010, 21:30
PM MAIL WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
littlemook
Дата 24.8.2010, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 24.8.2010

Репутация: нет
Всего: нет



Цитата(bars80080 @ 23.8.2010,  16:56)
посмотрите в сторону call_user_func() или чего-то аналогичного

Лучше call_user_func_array, удобней параметры подавать цельным массивом smile 
PM MAIL   Вверх
ZneP
Дата 25.8.2010, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 15.7.2008
Где: Россия, Москва

Репутация: нет
Всего: нет



Код

Class Hello {
     funtcion index() {
             echo "Hello";
     }
 
     function whats_up() {
             $num = func_num_args();  // просто так
             $args = func_get_args();  // массив параметров
             foreach($args as $arg)
                echo $arg;
    }
}


// $Component - вытащенное роутером название компонента
// $Module - вытащенное название функции
// $Params - массив параметров, вытащенный роутером из URL
if (class_exists($Component)) {
   $class_obj = new $Component;

   if (function_exists($Module)) {
      $class_obj->$Module(extract($Params));
   }
}


Как-то так я бы сделал


P.S. не тестил, поэтому за extract($Params) не ручаюсь
PM MAIL ICQ Skype   Вверх
gta4kv
Дата 25.8.2010, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Расскажу немножко о своем опыте в этом прискорбном деле.


Была в свое время такая же задача, реализовал я её с помощью ReflectionClass.

Работало все примерно так:
Код

        if( ! $module ) 
        {
            $module = 'page';
        }
        
        $path = path . '/system/modules/' . $module . '.php';
        
        if( file_exists( $path ) ) 
        {
            require_once path . '/system/modules/' . $module . '.php';
            
            if( class_exists( $module ) )
            {
               $shapeClass = new ReflectionClass( $module );
               
               if( ! $shapeClass->implementsInterface( 'iController' ) )
               {
                    $this->error_instance->set( "iController must be implemented to {$module} module." );       
               }
               
               $shapeMethod = $shapeClass->getMethod( 'init' );
               $shapeObject = new $module( );
               $result = $shapeMethod->invoke( $shapeObject, $parms );
            }
        }
        else
        {
            $this->error_instance->set( "{$module} not exists." );
        }    
        


И вот самый просто пример модуля с таким подходом
Код

<?php
class upload implements iController  
{    
    public function init ( $params )
    {
     $default_function = singleton::getInstance( 'config' )->default_function;
     $return = $this->$default_function( ( isset( $params[ 'action' ] ) ? $params[ 'action' ] : '' ) );
     return $return;
    }
    
    private function load( $action )
    {
     switch ( $action )
        {
            case 'test':
                $return = 'lol';
            break;
            default:
                $return = $this->page();
        }   
        return $return;
    }
    
    public function page()
    {
        return 'some content';
    }
}
?>


default_function забита в конфиге, "функция по-умолчанию". (в моем случае -- load).
PM MAIL   Вверх
Just123
Дата 25.8.2010, 22:22 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 9.12.2007
Где: localhost

Репутация: нет
Всего: нет



bars80080,  overmetallist, littlemook, ZneP, gta4kv,  Большое спасибо! 
PM MAIL   Вверх
Just123
Дата 26.8.2010, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 9.12.2007
Где: localhost

Репутация: нет
Всего: нет



Написал следующий метод:
Код

    function route() {
        if (file_exists(APP_ROOT.DS.'components'.DS.$this->class.DS.$this->class.'.php')) {
            include (APP_ROOT.DS.'components'.DS.$this->class.DS.$this->class.'.php');
        } else {
            show_404("$this->class");
        }
        
       if (isset($this->method)) {
            if (!call_user_func(array("$this->class", $this->method))) {
                    show_404("$this->class");  
            }     
       } else {
                call_user_func(array("$this->class", 'index'));
       }
        
       return;   
    }


Правда пока он не принимает аргументов функций.
Подскажите пожалуйста:
1) Как проверить существует функция или нет?
Код

            if (!call_user_func(array("$this->class", $this->method))) {
                    show_404("$this->class");  
            }     


В данном случаи, если функция не существует, появится ошибка:
Warning: call_user_func(News::asd) [function.call-user-func]: First argument is expected to be a valid callback in D:\Web Server\Apache\htdocs\kernel\classes\Route.php on line 49

как избежать появления этой ошибки, без помощи @ ?

2) Как передать аргументы в функцию, если общее количество аргументов не известно?


Это сообщение отредактировал(а) Just123 - 26.8.2010, 01:42
PM MAIL   Вверх
gta4kv
Дата 26.8.2010, 01:43 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



(скромно намекает) советую испробовать мой вариант, или хотя бы просто заглянуть в код в предыдущем моём посте.

Это сообщение отредактировал(а) gta4kv - 26.8.2010, 01:44
PM MAIL   Вверх
Just123
Дата 26.8.2010, 01:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 9.12.2007
Где: localhost

Репутация: нет
Всего: нет



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


Это сообщение отредактировал(а) Just123 - 26.8.2010, 02:04
PM MAIL   Вверх
gta4kv
Дата 26.8.2010, 02:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Функции class_exists и function_exists доступны по-умолчанию.
PM MAIL   Вверх
Just123
Дата 26.8.2010, 02:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 9.12.2007
Где: localhost

Репутация: нет
Всего: нет



gta4kv, Извиняюсь, проглядел function_exists. Спасибо большое.

Добавлено через 7 минут и 21 секунду
А как быть со вторым вопросом:
Как передать аргументы в функцию, если общее количество аргументов не известно?


PM MAIL   Вверх
ZneP
Дата 26.8.2010, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 15.7.2008
Где: Россия, Москва

Репутация: нет
Всего: нет



Код

function whats_up() {
             $num = func_num_args();  // количество переданных аргументов
             $args = func_get_args();  // массив аргументов
             foreach($args as $arg)
                echo $arg;
    }


// вызов
whats_up(1, "hello", 2, "asdfasdf", array(1,2,3), 3, .......);


Проверено лично

Если нужно, чтобы передавались значения с ключами, например:
$first = 1, $str = "hello", $second = 2, ....

то тогда лучше передавать ассоциативный массив

Это сообщение отредактировал(а) ZneP - 26.8.2010, 09:03
PM MAIL ICQ Skype   Вверх
gta4kv
Дата 26.8.2010, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Цитата(Just123 @ 26.8.2010,  02:07)
Как передать аргументы в функцию, если общее количество аргументов не известно?

Массив.
PM MAIL   Вверх
Just123
Дата 26.8.2010, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 9.12.2007
Где: localhost

Репутация: нет
Всего: нет



gta4kv, а как именно это сделать можно? С помощью call_user_func_array никак не получается передать массив...Вы не могли бы привести пример?
PM MAIL   Вверх
gta4kv
Дата 26.8.2010, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Зачем извращаться.

http://ru.php.net/manual/en/function.call-user-func.php

Код

<?php
function mySillyFunction( $params )
{
    var_dump( $params );
}
$mySettings = array( '1', '2', '3' );
call_user_func( 'mySillyFunction', $mySettings );
?>


Добавлено @ 18:13
Код не тестировал.

Это сообщение отредактировал(а) gta4kv - 26.8.2010, 18:16
PM MAIL   Вверх
Just123
Дата 26.8.2010, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 9.12.2007
Где: localhost

Репутация: нет
Всего: нет



gta4kv, Спасибо большое smile 
PM MAIL   Вверх
Just123
Дата 27.8.2010, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 9.12.2007
Где: localhost

Репутация: нет
Всего: нет



Я дико извиняюсь, что снова поднимаю эту тему, но мучает меня немного один вопрос.

Таким способом мы можем только передать массив содержащий все параметры, это немного не удобно.

Нельзя никак передать 2, 3, n аргументов?

т.е. сейчас функция должна иметь следующий вид:
Код

function hello($args) {
echo "Привет $args[0]";
echo "Как дела $args[1] ?";

}



Нельзя никак передать аргументы так, чтобы функция записывалась следующим образом:

Код

function hello ($name1, $name2) {
echo "Привет $name1";
echo "Как дела $name2 ?";
}


?
PM MAIL   Вверх
gta4kv
Дата 27.8.2010, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Это не имеет смысла, если вам нужны «реальные» имена, то ассоциативный массив вам в помощь.
PM MAIL   Вверх
bars80080
Дата 27.8.2010, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



есть: func_get_args()
PM MAIL WWW   Вверх
Just123
Дата 27.8.2010, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 9.12.2007
Где: localhost

Репутация: нет
Всего: нет



bars80080, поправьте меня, если я ошибаюсь, но с помощью функции func_get_args(), можно узнать лишь то, какие аргументы были переданы функции.

gta4kv, Почему это не имеет смысла? Ассоциативный массив тут не подойдёт т.е. названия ключей заранее не известны, они могут быть любыми. 

Это сообщение отредактировал(а) Just123 - 27.8.2010, 00:55
PM MAIL   Вверх
gta4kv
Дата 27.8.2010, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Какая реальная разница между записью $name[ 1 ] и $name1?

Добавлено через 2 минуты и 6 секунд
Цитата(Just123 @ 27.8.2010,  00:54)
bars80080, поправьте меня, если я ошибаюсь, но с помощью функции func_get_args(), можно узнать лишь то, какие аргументы были переданы функции.

var_export()
PM MAIL   Вверх
Just123
Дата 27.8.2010, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 9.12.2007
Где: localhost

Репутация: нет
Всего: нет



Код

Какая реальная разница между записью $name[ 1 ] и $name1?


Никакой, но а если там будут к  примеру $name, $sex, $mail, $age ?


PM MAIL   Вверх
gta4kv
Дата 27.8.2010, 01:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



и что?
PM MAIL   Вверх
Just123
Дата 27.8.2010, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 9.12.2007
Где: localhost

Репутация: нет
Всего: нет



Цитата

и что?

В смысле и что? Загвоздка как раз в этом, чтобы передать не массив $args, а переменные типа $name, $age  и т.д.
PM MAIL   Вверх
gta4kv
Дата 27.8.2010, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Цитата(gta4kv @ 27.8.2010,  00:57)
var_export()

писал еще вчера.
PM MAIL   Вверх
ZneP
Дата 27.8.2010, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 15.7.2008
Где: Россия, Москва

Репутация: нет
Всего: нет



Цитата(Just123 @  27.8.2010,  00:54 Найти цитируемый пост)
Ассоциативный массив тут не подойдёт т.е. названия ключей заранее не известны, они могут быть любыми. 

И?

Код

function Func1($name = "", $sex = "m", $age = 0) {
echo "Имя - ".$name;
echo "Возраст - ".$age;
}

function Func2($params = array()) {
echo "Имя - ".$params['name'];
echo "Возраст - ".$params['age'];
}

Func1("Маша", "f", 21);

$params = array("name" => "Маша", "sex" => "f", "age" => 21);
Func2($params);

Где разница то?

Если кол-во параметров не известно - используем ассоциативный массив.
Если названия параметров не известны:
foreach ($params as $key => $value) {
// $key = name, $value = Маша
// и тд
}
PM MAIL ICQ Skype   Вверх
bars80080
Дата 27.8.2010, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(Just123 @  27.8.2010,  00:54 Найти цитируемый пост)
поправьте меня, если я ошибаюсь, но с помощью функции func_get_args(), можно узнать лишь то, какие аргументы были переданы функции.

я отвечал на вопрос:
Цитата(Just123 @  27.8.2010,  00:16 Найти цитируемый пост)
Нельзя никак передать 2, 3, n аргументов?

func_get_args отлично позволяет обрабатывать сколько-угодно аргументов.

насчёт остального я даже боюсь читать, ибо не могу найти смысл
PM MAIL WWW   Вверх
Shogun
Дата 27.8.2010, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сёгун-сан
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 8.6.2006
Где: Кишинёв

Репутация: 9
Всего: 11



Код

class controller_class
  {
    public function controller_method($p1='', $p2='', $p3='')
      {
        echo $p1.'/'.$p2.'/'.$p3;
      }
  }

$uri = 'controller_class/controller_method/param1/param2/param3';

$segments = explode('/', trim($uri, ' /'));

$class = array_shift($segments);
$method = array_shift($segments);

if (is_callable(array($class, $method)))
  {
    call_user_func_array(array($class, $method), $segments);
  }
else { echo 'Error: 404'; }


Это сообщение отредактировал(а) Shogun - 27.8.2010, 14:39


--------------------
2b || !2b
PM MAIL ICQ Skype   Вверх
Just123
Дата 9.11.2010, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 9.12.2007
Где: localhost

Репутация: нет
Всего: нет



Я на некоторое время уезжал и не было возможности ни отписываться здесь, ни продолжать кодить, поэтому, если никто не против, я снова подниму данную тему.

Попытаюсь заново объяснить то, что требуется, на примере Code Igniter.

CodeIgniter использует подход, основанный на сегментах адреса:
www.your-site.com/news/article/my_article

Сегменты в URL, соответствуют архитектуре Модель-Отображение-Контроллер и, как правило, строятся таким образом:
www.your-site.com/class/function/arg

В первом сегменте описывается контроллер class к которому происходит обращение.
Во втором сегменте происходит ссылка на функцию function или метод, который необходимо вызвать.
В третьем и последующих сегментах описываются переменные, которые будут переданы в эту функцию.

В CI метод может выглядеть к примеру вот так:

Код

    function hello ($name, $id) {
        echo "\$name = $name";
        echo "<br>";
        echo "$id";
        
    }


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

Как этого добиться? Ковыряюсь в CI, но толком никак понять не могу, каким образом они это реализовали.
PM MAIL   Вверх
Shogun
Дата 11.11.2010, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сёгун-сан
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 8.6.2006
Где: Кишинёв

Репутация: 9
Всего: 11



Just123, в моем посте я именно такой метод и написал.

http://forum.vingrad.ru/index.php?showtopi...t&p=2203743


--------------------
2b || !2b
PM MAIL ICQ Skype   Вверх
Just123
Дата 11.11.2010, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 9.12.2007
Где: localhost

Репутация: нет
Всего: нет



Shogun, Точно! Спасибо большое, я почему-то когда пробовал его в прошлый раз, он не захотел нормально работать, видимо я где-то что-то перепутал.

Спасибо вам большое, вы мне очень помогли.

P.S. Я так понимаю, методы в таком случаи должны быть статическими? Т.к. если они не статические, то вылазиет ошибка:

Strict Standards: Non-static method controller_class::controller_method() cannot be called statically in D:\Web Server\Apache\htdocs\test.php on line 18

Strict Standards: Non-static method controller_class::controller_method() cannot be called statically in D:\Web Server\Apache\htdocs\test.php on line 20

Strict Standards: Non-static method controller_class::controller_method() cannot be called statically in D:\Web Server\Apache\htdocs\test.php on line 20
PM MAIL   Вверх
Shogun
Дата 11.11.2010, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сёгун-сан
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 8.6.2006
Где: Кишинёв

Репутация: 9
Всего: 11



Just123, хммм да нет не обязательно, в примере же не статичный метод...  а какая у вас версия пхп??


--------------------
2b || !2b
PM MAIL ICQ Skype   Вверх
Just123
Дата 11.11.2010, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 9.12.2007
Где: localhost

Репутация: нет
Всего: нет



Shogun, Версия 5.3, скорее всего из-за этого и ошибки. В любом случаи, спасибо еще раз. smile
PM MAIL   Вверх
Shogun
Дата 11.11.2010, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сёгун-сан
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 8.6.2006
Где: Кишинёв

Репутация: 9
Всего: 11



Just123, не думаю что и за этого... я тестил на 5.2 и на 5.3.1 и все нормально... ;)


--------------------
2b || !2b
PM MAIL ICQ Skype   Вверх
Just123
Дата 11.11.2010, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 9.12.2007
Где: localhost

Репутация: нет
Всего: нет



Shogun, Очень странно, так как даже пример у меня выдает те же самые ошибки. Аномалия. ))
PM MAIL   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0879 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.