PHP - Tips

From XennisWiki
Jump to: navigation, search

PHP programming tips

Basics

Deutsches Datum

Ausführliche Hilfe: PHP Manual - setlocale, PHP Manual - strftime

setlocale (LC_TIME, 'de_DE');
echo strftime( '%A, %d. %B %Y', strtotime('9/28/2011') );
// Ausgabe: Mittwoch, 28. September 2011

Framework einbinden

Framework einbinden, das sich aus der Sicht der PHP-Datei, in der sich die folgende Zeile befindet, in dem Ordner library befindet:

set_include_path (realpath (dirname (__File__) ) . '/library');

Globale Variablen

Ausführliche Hilfe: PHP Manual - $GLOBALS

$var = 'Globale Variable';

function test() {
    $var = 'Lokale Variable';

    echo $GLOBALS['var'] . '\n';
    echo $var. '\n';
}

test();

// Ausgabe:
// Globale Variable
// Lokale Variable

Fehlermeldungen einstellen (error_reporting)

siehe PHP Manual - error_reporting

Magische Konstanten

siehe PHP Manual - Magische Konstanten

Funktionsparameter

Ausführliche Hilfe: Funktionsparameter

<?php
function machkaffee($typ = "Cappucino")
{
    return "Ich mache eine Tasse $typ.\n";
}
echo machkaffee();
echo machkaffee(null);
echo machkaffee("Espresso");
?>

Ausgabe

Ich mache eine Tasse Cappucino.
Ich mache eine Tasse.
Ich mache eine Tasse Espresso.

Advanced

Classes and inheritance

Common.php

// Abstract means, you can't create an instance of this class, i.e. no "new Common()"
abstract class Common {

    // Protected fields can be accessed by the child, private fields can't
    protected $id;

    // By defining a abstract function you force all childs to implement this function
    public abstract function name();

    public function __construct($id) {
        $this->id = $id;
    }

    // Private function, which can't be accessed by a child, but which calls the function
    // "name" of the child
    private function getName() {
        return static::name();
    }

    public function setId($id) {
        $this->id = $id;
    }
}

Example.php

class Example extends Common {

    public function __construct($id) {
        // Call the parent constructor
        parent::__construct($id);
    }

    // Class have to implement this function, see above
    public function name() {
        return 'gallery';
    }

    // Overwrite the parent function
    public function setId($id) {
        if ($id > 20) {
            parent::setId($id);
        }
    }
}

Usage

require_once('Common.php');
require_once('Example.php');

$example = new Example(5);

// Function from class Example get called, which calls the parent function
$example->setId(20);

// Since the function "getName" is only implemented in the "Common" class, the function from
// the parent get called, which calls (in this example) a function from class "Example"
$example->getName();

See also