[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: вызов метода без создания объекта
Guest
if(method_exists($name, "onload"))
$name::onload();


В строке $name::load_events(); - ошибка, как же мне подставить название класса в такой ситуации?



Спустя 33 минуты, 38 секунд (16.08.2011 - 18:34) alex12060 написал(а):

class foo {

static function load() {
echo 'fooo';
}
}


foo::load();


Понятней так?

Спустя 8 минут, 29 секунд (16.08.2011 - 18:43) Guest написал(а):
alex12060
или я не понимаю, или вы меня не поняли. Название класса в переменной, мы не можем его знать заранее.

Спустя 25 минут, 12 секунд (16.08.2011 - 19:08) Nikitian написал(а):

$obj = new $name;
$obj::onload();

Ваш вариант будет работать только в php 5.3 и выше

Спустя 12 часов, 53 минуты, 57 секунд (17.08.2011 - 08:02) linker написал(а):
Guest
call_user_func(array($name, 'onload'));
Nikitian
Извини, но сейчас ты фигню написал. Через объекты нужно вызывать только обычные методы, статические методы вызываются через класс, ибо они принадлежат классу, а не объектам
class ClassName
{
public static function onload() {}
}


ClassName::onload();

Спустя 41 минута, 51 секунда (17.08.2011 - 08:44) Nikitian написал(а):
linker
Утро, оно такое... Просыпайся быстрее ;)

Под его вопрос подходит пример из мануала

$foo = new Foo();

print $foo::$my_static . "\n";
$classname = 'Foo';
print $classname::$my_static . "\n"; // As of PHP 5.3.0

Спустя 37 минут, 30 секунд (17.08.2011 - 09:21) linker написал(а):
Nikitian
Да утро такое. Твой пример относится к статическим полям класса, под методы пример в мануале чуть ниже.
<?php
class
Foo {
public static function aStaticMethod() {
// ...
}
}


Foo::aStaticMethod();
$classname = 'Foo';
$classname::aStaticMethod(); // As of PHP 5.3.0
?>
У него не PHP 5.3.x иначе бы ошибок не было, под его вопрос, как раз подходит мой вариант.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.