Ανάγνωση μη υπαρκτής ιδιότητας στην ΑΝΠ στην PHP
Ας προσπαθήσουμε να γράψουμε δεδομένα σε μια μη υπαρκτή ιδιότητα - αυτό θα λειτουργήσει:
<?php
$test = new Test;
$test->prop3 = 3; // θα γράψουμε 3
echo $test->prop3; // θα εμφανίσει 3
?>
Ας πούμε ότι δεν θέλουμε να επιτρέψουμε την εγγραφή σε
μη υπαρκτές ιδιότητες. Και, γενικά, θέλουμε
να επιτρέψουμε την εγγραφή μόνο στις ιδιότητες prop1
και prop2.
Αυτό είναι εύκολο να γίνει - αρκεί στη μέθοδο __set
να προσθέσουμε την αντίστοιχη συνθήκη:
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
// Ας γράψουμε μια συνθήκη:
if ($property == 'prop1' or $property == 'prop2') {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>
Εάν υπάρχουν πολλές τέτοιες ιδιότητες, τότε δεν είναι πολύ βολικό να τις απαριθμούμε όλες στη συνθήκη.
Ας γράψουμε τις επιτρεπόμενες για εγγραφή ιδιότητες
σε έναν πίνακα και ας ελέγχουμε την ύπαρξη της ιδιότητας
σε αυτόν τον πίνακα χρησιμοποιώντας τη συνάρτηση
in_array:
<?php
class Test
{
private $prop1;
private $prop2;
public function __set($property, $value)
{
$properties = ['prop1', 'prop2']; // επιτρεπόμενες ιδιότητες
if (in_array($property, $properties)) {
$this->$property = $value;
}
}
public function __get($property)
{
return $this->$property;
}
}
?>