Felix Riesterer: OOP in PHP: __construct verstehen

Beitrag lesen

Lieber Jens,

Deine Klasse definiert ein Objekt mit Methoden, aber ohne Eigenschaften.

Der $user soll so 'aussehen':
$user['data']['id']
$user['data']['email']
$user['data']['name']

Du notierst hier anscheinend ein assoziatives Array. Willst Du das auch so? Das ginge so:

class User {

  private $data = array (
    'id' => '',
    'email' => '',
    'name' => ''
  );

  public  function __construct ()	{ ... }
  private function GetUserPersonData () { ... }
  private function GetUserMenuItems ( $userId ) { ... }
}

Ich möchte beim Aufruf von $user = new User(); im Hauptprogramm einen Nutzer erstellen, der schon vorbelegte Inhalte hat.

class User {

  private $data = array (
    'id' => uniqid('user_', true),
    'email' => '',
    'name' => ''
  );

  public  function __construct ($params)	{

    // copy values into $this->data
    if (!empty($params) && is_array($params)) {

      foreach (array_keys($this->data) as $key) {
        // exclude 'id' since it must be unique
        if ($key != 'id' && array_key_exists($key, $params)) {
          $this->data[$key] = $params[$key];
        }
      }
    }
  }
  ...
}

$user = new User(array(
  'email' => 'user@example.org',
  'name' => 'Fiffy the Great'
));

Liebe Grüße,

Felix Riesterer.