2012-06-21 3 views
1

Учитывая следующие классы:объекта доступа снаружи через абстрактную функцию

<?php 
class test{ 
static public function statfunc() 
    { 
    echo "this is the static function<br/>"; 
      $api= new object; 

    } 
} 

class traductor 
{ 

    public function display() 
    { 
     echo "this is the object function"; 
} 
} 

test::statfunc(); 

$api->display(); 

Это не отображает сообщение "this is the static function<br/>".

Есть ли способ создать экземпляр через статическую функцию и получить этот объект снаружи?

Спасибо ... Я неопытен в отношении кода программирования объекта.

ответ

2

Вы должны вернуть объект из статической функции:

static public function statfunc() 
{ 
    $api = new traductor; 
    return $api; 
} 

А затем хранить возвращенный объект в переменной, которую можно использовать.

$api = test::statfunc(); 
$api->display(); 
+0

Спасибо за вашу помощь простую и быструю! Спасибо за редактирование. –

2

Ваше использование декларации немного не работает. Ваш код приводит к 2 фатальным ошибкам. Во-первых, объект класса не найден, вы должны заменить:

$api= new object; 

С

return new traductor; 

Будучи статическим классом, они выполняют действия, они не содержат данные, следовательно, статическое ключевое слово. Помните об этом, когда начинаете работать с $ this и т. Д. Вам нужно вернуть результат к другой переменной.

test::statfunc(); 
$api->display(); 

должны стать:

$api = test::statfunc(); 
$api->display(); 

See, http://php.net/manual/en/language.oop5.static.php для получения дополнительной информации по некоторым ключевым словам статических и примеров.

+0

Спасибо за помощь! Я посмотрю ссылку, которую вы предоставили. –