Privát metódusok az OOP-ban PHP-ben

Nem csak tulajdonságok lehetnek privátak, hanem metódusok is. Általában segédmetódusokat tesznek priváttá, hogy véletlenül ne lehessen kívülről meghívni őket az osztályon kívül.

Nézzük egy példán. Tegyük fel, hogy van a következő osztályunk:

php<?php
  class User {
    private $name;
    
    public function __construct($name) {
      $this->name = $name;
    }
    
    public function show() {
      return $this->name;
    }
  }
?>

Készítsünk ebben az osztályban egy privát metódust, ami paraméterként fogad egy sztringet és nagybetűssé teszi annak első karakterét:

php<?php
  class User {
    private $name;
    
    public function __construct($name) {
      $this->name = $name;
    }
    
    public function show() {
      return $this->name;
    }
    
    private function cape($str) {
      return mb_strtoupper(mb_substr($str, 0, 1)) . mb_substr($str, 1);
    }
  }
?>

Használjuk fel segédmetódusunkat egy másik metóduson belül:

php<?php
  class User {
    private $name;
    
    public function __construct($name) {
      $this->name = $name;
    }
    
    public function show() {
      return $this->cape($this->name);
    }
    
    private function cape($str) {
      return mb_strtoupper(mb_substr($str, 0, 1)) . mb_substr($str, 1);
    }
  }
?>

Teszteljük. Hozzunk létre egy objektumot az osztályunkból:

php<?php
  $user = new User('john');
?>

Hívjuk meg a publikus metódust, ami a segédmetódust használja:

php<?php
  echo $user->show();
?>
Задание 1

A következő kódban tegye priváttá a segédmetódust:

php<?php
  class Employee {
    public function __construct($name, $salary) {
      $this->name = $name;
      $this->salary = $salary;
    }
    
    public function getSalary() {
      return $this->addSign($this->salary);
    }
    
    public function addSign($num) {
      return $num . '
;
    }
  }
?>