Наследование класса PHP для начинающих

class User{ public $company_name; } class Employer extends User{ public $fname; public $sname; } 

это test.php, который я создал. Я включил файл класса.

 $employer = new Employer(); $user = new User(); $employer->company_name = "Company name is "; echo $user->company_name; 

Когда я печатаю имя, ничего не происходит, сообщите мне, что случилось с моим кодом.

Класс Employer расширяет ваш класс User но при создании объектов $user и $employer они являются отдельными объектами и не связаны друг с другом.

Подумайте о таких объектах:

 $employer = new Employer(); // You now have $employer object with the following properties: // $employer->company_name; // $employer->fname; // $employer->sname; $user = new User(); // You now have $user object with the following properties: // $user->company_name; $employer->company_name = "Company name is "; // You now have $employer object with the following properties: // $employer->company_name = 'Company name is '; // $employer->fname; // $employer->sname; echo $user->company_name; // You currently have $user object with the following properties: // $user->company_name; /* no value to echo! */ 

Если вы хотите использовать унаследованные свойства, он работает примерно так:

 class User{ public $company_name; function PrintCompanyName(){ echo 'My company name is ' . $this->company_name; } } class Employer extends User{ public $fname; public $sname; } $employer = new Employer(); $employer->company_name = 'Rasta Pasta'; $employer->PrintCompanyName(); //echoes 'My company name is Rasta Pasta.' 

Не путайте переменные, $user и $employer , с классами. $user – это экземпляр класса User, а $employer – это экземпляр класса Employer, но они являются отдельными переменными.

Вы никогда не устанавливаете $user->company_name .

 echo $employer->company_name; 

Вы не присвоили что-то $company_name объекта $ user; только для работодателя.

Вам просто нужно эхо

  $employer->company_name; 

или установить

  $user->company_name 

к некоторой ценности.

Вам не нужно создавать экземпляр родительского класса для работы с дочерним классом. В этом случае работодатель $ наследует company_name из класса User.