2016-04-25 2 views
0

Я хочу использовать этот способ, но у меня есть проблема, function __construct() dosn't work? Зачем ?функция использования __construct() для статических функций?

class user{ 

    function __construct(){ 
    define('HI', 'hello'); 
    } 

    static function say_hi(){ 

    echo HI ; 
    } 
} 

user::say_hi();// Out put should be : hello 
+0

'$ тест = новый пользователь();' – aldrin27

+0

мне нужно использовать статическую функцию. –

+0

Возможный дубликат [Функция вызова внутри \ _ \ _ с помощью php] (http://stackoverflow.com/questions/6533724/call-function-inside-construct-with-php) –

ответ

0

Вы должны создать новый экземпляр класса user внутри say_hi() метода. Когда вы создаете экземпляр внутри метода say_hi(), он будет вызывать метод конструктора и впоследствии определять константу HI.

Так что ваш код должен выглядеть так:

class user{ 
    function __construct(){ 
     define('HI', 'hello'); 
    } 

    static function say_hi(){ 
     new user(); 
     echo HI ; 
    } 
} 

user::say_hi(); 

Выход:

hello 
+0

Спасибо за solotion :) –

0

Конструктор вызывается только при инициализации класса, например $user = new user();. При вызове статической функции класс не инициализируется, поэтому конструктор не вызывается.

+0

Что это за соло? Мне так нужен! –

0

Вы можете сделать это путь, только если у вас есть PHP версии> = 7

class User{ 

    function __construct(){ 
    define('HI', 'hello'); 
    } 

    static function say_hi(){ 

    echo HI ; 
    } 
} 

(new User())::say_hi(); 
+0

Нет, я не использую. Каким образом используется статическая функция? –

+0

Затем определите его глобально внутри класса или вне класса, что-то вроде 'const HI = 'hello';' или просто вызовите класс в статической функции. –

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