Archivo Explosivo: PHP

Robo – Modern Taskrunner for PHP

Eine PHP-Variante von Gulp und Grunt für PHP:

Robo is a task runner you always have been looking for. It allows you to write fully customizable tasks in common OOP PHP style. Robo has comprehensive list of built-in common tasks for development, testing, and deployment.

robo.li

FIAE – OOP – Objektorientierte Programmierung – Persistenz

Persistenz (nicht unkontrolliert veränderlich) bedeutet, dass Daten auch nach Beenden eines Programms vorhanden (gespeichert) bleiben, und bei erneutem Aufruf des Programms wieder rekonstruiert und angezeigt werden können. (Im Gegensatz dazu: flüchtige Daten – transient) Persistente Objekte besitzen eine potentiell unendliche Lebensdauer und können nur durch expliziten Aufruf einer speziellen Methode (Destruktor) gelöscht werden. Sie werden in permanenten Speichersystemen z.B. objektorientierten Datenbanksystemen verwaltet.

In diesem Zusammenhang taucht oft ein Pattern auf: Data Access Object ist zum Beispiel ein Entwurfsmuster (Pattern) das den Zugriff auf unterschiedliche Datenquellen (Datenbanken, Dateisystem) so kapselt, dass die angesprochene Datenquelle ausgetauscht werden kann, ohne dass der aufrufende Code geändert werden muss. Dadurch soll die eigentliche Programmlogik von technischen Details der Datenspeicherung befreit werden und flexibler einsetzbar sein.

In PHP wäre so ein Persistenz-Layer MySQL, PDO (PHP Data Objects) oder das Doctrine Project (ORM, DBAL).

100 Commits bei Constructr CMS

Wo ist der Sekt… das wird gefeiert!

phaziz WordPress-Theme Update

Jetzt mit Custom-Galerien (justifiedGallery) und Custom-Lightbox (Swipebox).

Das ganze auf GitHub zum Download: https://github.com/phaziz/phaziz-wp-theme

„phaziz“ WordPress-Theme

Wer hat Lust ein neues WordPress-Theme auf Herz und Nieren zu prüfen?

Das Paket gibt es auf GitHub unter https://github.com/phaziz/phaziz-wp-theme

phazizTheme

Constructr CMS 3.0

ConstructrCMS (https://github.com/phaziz/ConstructrCMS-3) based on FatFree-Framework, Materialize CSS, MySQL/PDO, jQuery/Javascript and Passion!

That’s it for now (Version 3.0 / 2015-07-29):

– Page-Management
– Create, edit, re-order/order, activate/deactivate and delete Pages
– Page specific CSS- and JS-Content
– Markdown Content-Management with Live-Preview
– Create, edit, re-order/order, activate/deavtivate and delete Content-Elements
– Template-Management
– EASY PHP-Templates
– Asset-Management (Uploads) with Live-Preview
– Add, edit, delete, Uploads
– User Management
– Create, edit, delete User-Accounts
– User Rights-Management
– Activate/Deactivate UserRight
– User Password resetting

INSTALLATION:
– VISIT THE INSTALLER AT http://yourdomain.tld/CONSTRUCTR-CMS-SETUP/

CHANGELOG
– 2015-07-29 AutoInsert Markdown for Files / little Bugfixes and minor Features
– 2015-07-28 Webinstaller / little Bugfixes and minor Features
– 2015-07-23 Grande Update IV…
– 2015-03-23 Grande Update III…
– 2015-03-21 Grande Update II…
– 2015-03-19 Grande Update…
– 2015-03-18 Initial commit

Slim 3 – Sekelton App gefunden

Ein simples Skelett bestehend aus Slim3, Twig und Monolog: GitHub

ConstructrCMS 2.0

Constructr CMS 2.0

Bald ist es soweit – Constructr CMS Version 2.0 auf Basis eines neuen PHP-Frameworks (FatFree)…

weiterlesen >

PHP PDO

PDO in Slim

Schreibt doch keiner mehr pures MySQL mit den entsprechenden PHP-Funktionen… Deshalb eine Anbindung im PHP PDO Style in Slim:

In der index.php im Root-Level wird PDO eingebunden und instanziert:



    $HOSTNAME = "DATENBANK_HOST";
    $DATABASE = "DATENBANK";
    $USERNAME = "BENUTZERNAME";
    $PASSWORD = "PASSWORD";

    try
    {
        $DBCON = new PDO("mysql:host=" . $HOSTNAME . ";dbname=" . $DATABASE,$USERNAME,$PASSWORD,
            array
            (
                PDO::ATTR_PERSISTENT => true
            )
        );

        $DBCON -> setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    }
    catch (PDOException $e)
    {
        die();
    }

Danach kann PDO in den gewünschten Routen benutzt werden:


    ...
    try {
        $ORDERS = $DBCON -> prepare('SELECT * FROM ...;');
        $ORDERS -> execute();
    } catch (PDOException $e) {
        echo $e -> getMessage();
        die();
    }
Idiorm & Paris

Slim Framework und Datenbanken

Wie wahrscheinlich bei jedem andern Framework, gibt es auch bei Slim mehrere Möglichkeiten eine Datenbankanbindung herzustellen.

Natives SQL, Anbindung per PDO, oder eine Anbindung durch ein ORM der Wahl. Wenn es um ORMs geht, kann ich nur eine Empfehlung für die Kombination Idiorm & Paris von Jamie Matthews aussprechen. Wobei Idiorm die Rolle des objekt-relationalen-Mapping’s und Query-Builder’s übernimmt und Paris das „Active Record“-Pattern implementiert. Beide sehr klein und äußerst flink ;-)

Um dieses dynamische Duo mit Slim zu verbinden, müssen die entsprechenden Dateien von Paris & Idiorm heruntergeladen werden und in der Verzeichnisstruktur des Projekts abgelegt werden. In der Index-Datei des Projekts können diese Klassen dann inkludiert und konfiguriert werden:


    ...
    require 'Helper/idiorm.php';
    require 'Helper/paris.php';
    ...

    ORM::configure('mysql:host=MEIN_DATENBANK_HOST;dbname=MEINE_DATENBANK');
    ORM::configure('username','BENUTZERNAME');
    ORM::configure('password','PASSSWORT');
    ORM::configure('logging','false');

    // Primärschlüssel der eingebundenen Tabellen definieren
    ORM::configure('id_column_overrides', array
        (
            'logs' => 'lg_id',
            'tabelle2' => 'primary_id2',
            ...
        )
    );
    ...

Wenn dies ohne Fehlermeldungen im Browser abgeschlossen ist, kann man das Duo in den gewünschten Routen verwenden und seine Abfragen damit gestalten:


    ...
    $LOG = Model::factory('Logs')->create();
    if($LOG instanceof Logs){
        $LOG -> log_timestamp = date('Y-m-d H:i:s');
        $LOG -> log_user_id = $_USERID;
        $LOG -> log_username = $_USERNAME;
        $LOG -> log_txt = 'Logging...';
        $LOG->save();
    }
    ...

Paris und Idiorm auf GitHub.

1 2 3