Antwort an „Raketenwilli“ verfassen

Und nochwas, darf ich Eigenschaften jederzeit überschreiben?

$pdf = new(klassenaufruf);
$pdf->name = "Heinz";
...
...
...
$pdf->name = "doch lieber Hans";

Bastian

Das kommt darauf an, wie die Klasse definiert ist

Steht da:

class foo {
    protected name="";
    #…
}

Dann kannst Du das nicht. Es sei denn Du hast einen setter, bzw. getter:

<?php
# file: foo.class.php

class foo {

    protected $name;
    
    function __construct( $s = "Foo" ) {
        $this -> setName( $s );
    }
    
    function setName( $s ) {
         $s = trim( $s );
         if ( $s ) {
             $this->name = trim( $s );
             return true;
         } else {
             return false;
         }
    }

    function getName() {
         return $this -> name;
    }
}

Dann kannst Du das wie folgt machen:

<?php
require_once( 'foo.class.php' )
$f = new foo ('Bastian');
echo $f -> getName() . PHP_EOL;
$f -> setName( 'Hans' );
echo $f -> getName() . PHP_EOL;
$f -> setName( 'Willi' );
echo $f -> getName() . PHP_EOL;
# Bastian
# Hans
# Willi

Vorteil: Du kannst die übergebenen Werte prüfen ( if() ) und ggf. verändern ( trim() ), ggf. sogar eine Authorisierung prüfen.

Hast Du aber:

class foo {
    public $name;
}

Dann kannst Du das „jederzeit“ - ohne eine Prüfung zu erzwingen.

$f = new foo;
$f -> name = 'Bastian';
echo $f -> name . PHP_EOL;
$f -> name = 'Hans';
echo $f -> name . PHP_EOL;
$f -> name = 'Willi';
echo $f -> name . PHP_EOL;
# Bastian
# Hans
# Willi

Die Variante 2 sieht einfacher aus, öffnet aber „jeder Menge Mist“ Tür und Tor. Oft will man genau das gerade nicht haben. Das wirst Du schon noch merken...

freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar

Ihre Identität in einem Cookie zu speichern erlaubt es Ihnen, Ihre Beiträge zu editieren. Außerdem müssen Sie dann bei neuen Beiträgen nicht mehr die Felder Name, E-Mail und Homepage ausfüllen.

abbrechen