php – metody magiczne

Przykładowy kod objaśniający działanie metod magicznych w PHP.
Kod pochodzi z kursu eduweb.pl który znakomicie wyjaśnia funkcjonowanie bardziej zaawansowanych zagadnień programowania obiektowego.

Gorąco polceam.

<?php

class Session {

    function __set($name, $value) {
        $_SESSION[__CLASS__][$name] = $value;
    }

    function __get($name) {
        if (isset($_SESSION[__CLASS__][$name])) {
            return $_SESSION[__CLASS__][$name];
        }

        return NULL;
    }

    function __isset($name) {
        return isset($_SESSION[__CLASS__][$name]);
    }

    function __unset($name) {
        if (isset($_SESSION[__CLASS__][$name])) {
            unset($_SESSION[__CLASS__][$name]);
        }
    }

    function __toString() {
        return print_r($_SESSION[__CLASS__], TRUE);
    }

}

session_start();

$Session = new Session();

$action = (isset($_GET['action'])) ? $_GET['action'] : '';

switch ($action) {
    case 'login':
        $Session->user_name = 'Maciek';
        $Session->is_admin = 1;
        break;

    case 'check':
        if (isset($Session->user_name)) {
            echo 'Zalogowano użytkownika ' . $Session->user_name . ' ';
            echo (isset($Session->is_admin)) ? 'jako admin' : 'jako użytkownik';
        } else {
            echo 'Użytkownik nie jest zalogowany';
        }
        break;

    case 'logout':
        unset($Session->user_name);
        unset($Session->is_admin);
        break;

    case 'dump':
        echo $Session;
        break;

    default:
        echo 'Wybierz akcje';
}

Leave a Reply