OCEAN ist ein von mir entwickeltes PHP Framework. Es befindet sich noch in der Pre-Alpha-Version.
Features
- Model - View - Controller
- RESTful
- Database Mapping
- PDO
- Request (Valid)
- Tokens
- Session
- Cookies
- Routing
To do
- Respone
- Cache
- Redirect
- Composer integration
Wer mag kann sich OCEAN auf Github anschauen. Damit das Framework sauber läuft wird ein appache-vhost empfohlen.
Dokumentation
Einführung in OCEAN - PHP FRAMEWORK
Datenbank einrichten
Die Datenbank Konfigurationsdatei findet man im System Ordner. In diesem Ordner befindet sich database.php. Dort können Zugangsdaten für die Datenbank hinterlegt werden.
database.php
<?php $GLOBALS['database'] = array( /* * selected database */ 'connected' => 'mysql', //ausgewählte db /** * defined databases */ 'connections' => array( /** * mysql database */ 'mysql' => array( 'driver' => 'mysql', // keine mysqli unterstützung. Nur PDO 'host' => 'localhost', // Hostname 'database' => 'deineDB', // Datenbankname 'username' => 'root', // Benutzer 'password' => '', // Password ), ) );
Routing
Deine Seiten und die dazugehörenden Controller kannst du in der routes.php eintragen. Diese liegt in dem System Ordner.
$GLOBALS['routes'] = array( /** * Restful example */ 'userIndex' => array( 'method' => 'get', //http method 'path' => '/user', //uri path 'controller' => 'UserController.index', //your controller -> Klassname.method ), 'createUser' => array( 'method' => 'post', 'path' => '/user', 'controller' => 'UserController.create', ), 'showUser' => array( 'method' => 'get', 'path' => '/user/:id', 'controller' => 'UserController.show', ), 'updateUser' => array( 'method' => 'put', 'path' => '/user/:id', 'controller' => 'UserController.update', ), 'deleteUser' => array( 'method' => 'delete', 'path' => '/user/:id', 'controller' => 'UserController.delete', ) );
RESTful
Dir stehen folgende HTTP Methoden zur verfügung
- get
- post
- put
- patch
- head
Bitte beachten:
Abgesehen von post und get müssen alle anderen Methoden getunnelt werden:
Beispiel
<form> <input name="_method" type="hidden" value="put"> </form>
Controller
Controller Klassen liegen im controller/ Ordner. Klassenname und Dateiname müssen gleich sein.
Beispiel: HomeController.php
<?php namespace Ocean;
class HomeController
{
/**
* @path /
* http method get
*/
public function index()
{
/*
* your logic
*/
include 'views/page/home.php';
}
}
Model
Die Model Klassen liegen im models/ Ordner. Hier gilt das gleiche wie bei den Controllers. Dateiname == Klassenname. Bei einem Model gibt es zwei relevante Eigenschaften.
- ( protected ) $table
- ( protected ) $schema
Nicht vergessen, dein Model mit der Model Klasse zu erweitern: DeinModel extends Model
Beispiel: User.php
<?php namespace Ocean;
class User extends Model
{
/**
* tablename
*/
protected $table = 'oc_user';
/**
* fields
*/
protected $schema = array(
'id' => 'int(12) AUTO_INCREMENT PRIMARY KEY',
'username' => 'varchar(255)',
'message' => 'text'
);
}
Vererbte Model Methoden und Eigenschaften
Deinem Model stehen ein paar nützliche Eigenschaften und Methoden zur verfügung. z.B Create ( Insert ), Read, Update, Delete ( CRUD ).
INSERT ( Row ) & CREATE ( Table )
<?php namespace Ocean;
class UserController
{
/**
* post /user
* create new user
*/
public function create()
{
/**
* get post data from form with Request class
*/
$input = Request::only(array('username', 'message'));
/**
* create instance of User
*/
$user = new User();
/**
* create user table [if not exist]
*/
$user->create();
/**
* fill user attributes
*/
$user->username = $input['username'];
$user->message = $input['message'];
/**
* insert new table with given attributes
*/
$user->insert();
/**
* Redirect back to user page
*/
header("Location: /user");
}
}
READ
<?php namespace Ocean;
class UserController
{
/**
* get /user/:id
* get specific user
*/
public function show($param)
{
/**
* get user id from param
*/
$userID = $param['id'];
/**
* create instance of User
*/
$user = new User();
/**
* get user with current id
*/
$user->where = 'id = '.$userID;
/**
* get user object
*/
$currentUser = $user->find()[0]; //get first object
/*
* load view
*/
include 'views/page/user-profile.php';
}
}
UPDATE
<?php namespace Ocean;
class UserController
{
/**
* put /user/:id
* update user
*/
public function update($param)
{
/**
* get post data from form with Request class
*/
$input = Request::only(array('username', 'message'));
/**
* get user id from param
*/
$userID = $param['id'];
/**
* create instance of User
*/
$user = new User();
/**
* update user attributes
*/
$user->username = $input['username'];
$user->message = $input['message'];
/**
* select user
*/
$user->where = 'id = '.$userID;
/**
* update user
*/
$user->update();
/**
* Redirect back to user page
*/
header("Location: /user");
}
}
DELETE
<?php namespace Ocean;
class UserController
{
/**
* delete /user/:id
* delete user
*/
public function delete($param)
{
/**
* get user id from param
*/
$userID = $param['id'];
/**
* create instance of User
*/
$user = new User();
/**
* select user
*/
$user->where = 'id = "'.$userID.'"';
/**
* remove user
*/
$user->remove();
/**
* Redirect back to user page
*/
header("Location: /user");
}
}
More…
Weitere Eigenschaften
- where
- limit
- joins
- auto. timestamps
Dokumentation wird noch erweitert…
Weitere Features/Klassen
- system/core/Http/Token.php
- system/core/Http/Session.php
- system/core/Http/Cookie.php
- system/core/Http/Request.php
- system/core/Validator/Valid.php
- system/core/Validator/ValidEntities.php