2014-09-09 2 views

ответ

0

Предположим, вы получили фатальную ошибку, потому что print зарезервирован ключевое слово, вы не можете использовать в качестве класса method имя, используйте другой имя, смотрите ниже

<?php 
     class persons { 
     var $name = ""; 

     public function people(){ 
       $this->name="pepe"; 
     } 

     public function print_1(){ 
       echo $this->name; 
       echo '<br>'; 
     } 
    } 

    $per1=new persons(); 
    $per1->people(); 
    $per1->print_1(); 
    ?> 

Как @deceze упоминание в комментарий __construct() или ClassName метод класса конструкции для инициализации значений

DEMO

+0

Я переключился на печатные и не работает –

+0

я ничего –

+0

@JuanMorales увидеть демо https://eval.in/ не печатает 190565 – Girish

-1

Вам нужно определить $name в вашем объекте. У вас также есть print(), который я не думаю, что вы можете использовать. Вам нужно сделать что-то вроде _print.

<?php 
    class persons 
     { 
      public $name; 
      public function init(){ 
        $this->name = "pepe"; 
       } 

      public function _print(){ 
        echo $this->name; 
        echo '<br>'; 
       } 
     } 

    $per1 = new persons(); 
    // If you don't define your name in a class you use (ie. you should define it in your $this->_print()), you can define it outside 
    // It's not the greatest solution. but it will work. 
    $per1->name = 'pepe'; 
    $per1->_print(); ?> 

Вы также можете определить init() внутри _print() так:

<?php 
     class persons 
      { 
       public $name; 
       public function init(){ 
         $this->name = "pepe"; 
        } 

       public function _print(){ 
          $this->init(); 
         echo $this->name; 
         echo '<br>'; 
        } 
      } 

     $per1 = new persons(); 
     $per1->_print(); ?> 
1

Ваша init функция никогда не выполняется, следовательно, имя никогда не устанавливается.
Если вы хотели использовать конструктор, you need to name it __construct.

(Другая ошибка о зарезервированных print ключевое слово применяется также.)

+0

Хорошо, но я не хочу, чтобы contructor и переименовать и методы для инициализации и печати –

+0

Тогда вам нужно вызвать '-> init() 'в какой-то момент. Вы не можете использовать конструктор, а также не вызывать код, который устанавливает ваше имя, но все же ожидает, что имя будет установлено. – deceze

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