Ein leichtes, einfach zu verwendendes PHP -Framework zum Erstellen von Websites und Web -Apps.
Die Architektur von Sippy stellt die Ähnlichkeit mit Codesigniter ab, sodass wir es ein leichtes PHP -Framework nennen. Denken Sie jedoch daran, dass Sippy, da es leicht ist, nicht viel Funktionalität enthält, die mit Codesigniter geliefert wird. Vielleicht können wir "Plug-N-Play" -Funktionalität über Plug-Ins, Controller und Bibliotheken hinzufügen. Um das "Beispiel" aus der Konfigurationsdatei in Anwendung/config/sample.config.php zu entfernen, ist es Anwendung/config/config.php und füllen Sie Ihre Konfigurationsdaten aus.
Sippy basiert auf dem Entwicklungsmuster für Modell-View-Controller.
Ihre Anwendungsspezifischen Dateien werden im Ordner "Anwendungs" (Anwendung "enthalten (Sie müssen den Systemordner nicht berühren). Im Anwendungsordner befinden sich Ordner für alle spezifischen Anwendungseinheiten:
Config Controller Helpers Protokolle Modelle Plugins Ansichten
Wenn Sippy Dateien lädt, wird davon ausgegangen, dass sie sich in den entsprechenden Ordnern befinden. Stellen Sie also sicher, dass Sie Ihre Dateien in den richtigen Ordnern platzieren.
Wir empfehlen Ihnen, den Ordner "Assets" im Stamm zu verwenden, um Ihre statischen Ressourcendateien (CSS, JS usw.) zu speichern. Sie können sie jedoch überall einsetzen. Sie können auch die Funktion site_url() verwenden, um Dateien in Ihr HTML oder site_url('main/index') zu helfen, um zur Seite http://www.yoursite.com/main/index zu wechseln. Zum Beispiel:
< link rel =" stylesheet " href =" <?php echo site_url(); ?>assets/css/style.css " type =" text/css " media =" screen " />Alle Klassen in Sippy verwenden Pascalcase -Namen. Die zugeordneten Dateinamen müssen mit Ausnahme aller niedrigeren Falls gleich sein. Zum Beispiel würde die Klasse -Hauptklasse die Dateiname mellClass.php haben. Unterstiche in den Klassen müssen auch in Dateinamen enthalten sein.
Standardmäßig sind URLs in Sippy so konzipiert, dass sie Suchmotor und menschlich freundlich sind. Anstatt den Standard-Ansatz "Query String" für URLs zu verwenden, der gleichbedeutend mit dynamischen Systemen ist, verwendet Sippy einen segmentbasierten Ansatz:
example.com/class/function/param Standardmäßig index.php ist in der URL versteckt. Dies geschieht mit der .htaccess -Datei im Stammverzeichnis.
Stellen Sie einfach Dateien in Ihr Projekt ein, um eine einfache Authentifizierung zu erhalten: https://github.com/trafficinc/sippy-auth
Controller sind die treibende Kraft einer sippigen Anwendung. Wie Sie aus der URL -Struktur sehen können, werden Segmente der URL einer Klasse und Funktion zugeordnet. Diese Klassen sind Controller, die im Verzeichnis "Anwendung/Controller" gespeichert sind. Also zum Beispiel die URL ...
example.com/main/login ... würde dem folgenden Controller mit dem Dateinamen main.php zugeordnet:
<?php
class Main extends Sippy_controller {
function index () {
// This is the default function (i.e. no function is set in the URL)
}
function login () {
echo ' Hello World! ' ;
}
}... und die Ausgabe wäre "Hallo Welt!".
Der Standard -Controller und der Fehlerregler können in Application/config/config.php eingestellt werden
Beachten Sie, dass Sie, wenn Sie einen Konstruktor deklarieren müssen, auch den übergeordneten Konstruktor wie:
<?php
class Example extends Sippy_controller {
public function __construct ()
{
parent :: __construct ();
// Your own constructor code
}
}
?>Es gibt mehrere Helferfunktionen, die auch in Controllern verwendet werden können. Die meisten dieser Funktionen nehmen den Parameter $ $ der entsprechenden Klasse an:
Protokollefehler und Informationen debuggen
Dann können Sie diesen Code Ihrem Controller zum Debuggen hinzufügen.
log_message('error','Your log message');log_message('debug','Your log message');Beispiel Controller Validation & CSRF Token Protection & Flash -Fehler/Erfolgsnachrichten: #Controller `` `Require System_dir. '/Validation.php'; ###### - Klasse - geschützte $ Validierung;
function __constructor() {
$this->validation = new Validation;
}
$data['messSuccess'] = $this->flash->message('success');
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if ($_POST['csrf'] === $_SESSION['csrf_token']) {
$validator = $this->validation->go($_POST, [
'email' => 'required|min:5',
'password' => 'required',
]);
if (count($validator) > 0) {
$data['errors'] = $validator;
} else {
// ** Do Stuff **
$this->flash->message('success','Your flash message here');
$this->redirect('auth/login');
}
}
}
```
#Sicht
<h1>Login</h1>
<?php
if (isset($messSuccess)) {
$this->success_block($messSuccess);
}
if (isset($errors)) {
$this->error_block($errors);
}
?>
<form method="post" action="<?php echo site_url('auth/login'); ?>">
<input type="hidden" name="csrf" value="<?php echo $this->security->generate_csrf_token(); ?>"/>
<div class="form-group">
<label for="email">Email address</label>
<input type="email" name="email" class="form-control" id="email" placeholder="Email">
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" name="password" class="form-control" id="password" placeholder="Password">
</div>
<button type="submit" class="btn btn-default">Login</button>
</form>
In Sippy ist eine Ansicht einfach eine Webseite. Sie können alles enthalten, was eine normale Webseite enthalten würde. Die Ansichten werden fast immer von Controllern beladen. Also, wenn Sie beispielsweise eine Ansicht namens main_view.php hatten, die die folgende HTML enthielt:
<html>
<head>
<title>My Site</title>
</head>
<body>
<h1>Welcome to my Site!</h1>
</body>
</html>
. . . you would load it in a controller by doing the following:
// Controller file...
<?php
class Main extends Sippy_controller {
function index ()
{
$ template = $ this -> View ( ' main_view ' );
$ template -> render ();
}
} Die Ansichtsklasse verfügt über eine Helferfunktion namens set($key, $val) , mit der Sie Variablen vom Controller an die Ansicht übergeben können.
$ template = $ this -> View ( ' main_view ' );
$ template -> set ( ' someval ' , 17 );
$ template -> render ();... dann konnten Sie in der Ansicht tun:
<?php echo $someval; ?>
... und die Ausgabe wäre 17. Jede Art von PHP -Variable kann auf diese Weise an eine Ansicht übergeben werden: Arrays usw.
ODER
Im Controller können Sie Ihre Ansichten mit Daten aufrufen, die dann in der Ansicht verfügbar sind. Dies kann auf Wege erreicht werden. In Controller ...
$ header = array ( ' title ' => ' My Title ' , ' descr ' => ' Login Page ' , ' keywords ' => ' login,page,mysample ' );
$ template = $ this -> View ( ' main/index ' , $ d );In der Ansicht können diese Array -Elemente so zugegriffen werden wie so ...
<?php echo $title; ?>
Das wird den Text "Mein Titel" und so weiter für den Rest des Arrays zeigen.
Der bevorzugte Weg, um in Ansichten auf Daten zuzugreifen, besteht darin, das Datenarray zu benennen und wie so im Controller darauf zugreifen zu können.
$ data [ ' body ' ] = " Hello World " ;
$ data [ ' heading ' ] = array ( ' title ' => ' My Title ' , ' descr ' => ' Login Page ' , ' keywords ' => ' login,page,mysample ' );
$ template = $ this -> View ( ' main/index ' , $ data );dann nach Blick ...
//body can be accessed
<?php echo $ body ; ?>
//heading can be accessed as an array
<?php
foreach ( $ heading as $ head ) {
echo $ head [ ' title ' ];
. . . etc.
}
?> In Sippy -Modellen befinden sich Klassen, die sich mit Daten befassen (normalerweise aus einer Datenbank), eine Beispieldatenbank, die die testdb.sql -Datei in Sequel Pro oder Ihre SQL -GUI der Wahl lädt. Zum Beispiel:
<?php
class Example_model extends Sippy_model {
public function getSomething ( $ id )
{
$ id = $ this -> escape ( $ id );
$ result = $ this -> query ( " SELECT * FROM something WHERE id=' { $ id } ' " );
return $ result ;
}
}
?>... Dann würden Sie in einem Controller tun:
function index ()
{
$ example = $ this -> Model ( ' Example_model ' );
$ data [ ' something ' ] = $ example -> getSomething ( $ id );
$ template = $ this -> View ( ' main_view ' , $ data );
$ template -> render ();
} Jetzt sind die Ergebnisse Ihrer Datenbankabfrage in Ihrer Ansicht in $ symval verfügbar. Eine Verbindung mit der MySQL -Datenbank kann in Ihrer Datei config/config.php erfolgen (denken Sie daran, die Datei sample.config.php umzubenennen):
$ config [ ' db_host ' ] = '' ; // Database host (e.g. localhost)
$ config [ ' db_name ' ] = '' ; // Database name
$ config [ ' db_username ' ] = '' ; // Database username
$ config [ ' db_password ' ] = '' ; // Database passwordEs gibt mehrere Helferfunktionen, die auch in Modellen verwendet werden können:
query($query) - Gibt eine Reihe von Ergebnissen aus einer Abfrage zurückgetrow($query) - Gibt eine Zeile aus der Abfrage zurückgetrowobj($query) - Gibt eine Zeile als Objekt zurückexecute($query) - Gibt das direkte Ergebnis aus einer Abfrage zurückescape($string) - Escape -Saiten, bevor sie in Anfragen verwendet werdeninsert($table, $dataArray) - In eine Tabelle mit einem Array einfügenEs gibt einen HTML-Helfer, den Sie in Controllern und Ansichten über $ this-> html-> esc () und mehr in Ihrer URL verwenden können, wenn Sie Sippy zu URL-Main/Test ausführen, um die verfügbaren Funktionen zu sehen.
Es gibt zwei Arten von zusätzlichen Ressourcen, die Sie in Sippy verwenden können.
Helfer sind Klassen, die Sie verwenden können, die nicht unter die Kategorie "Controller" fallen. Dies sind in der Regel Klassen, die zusätzliche Funktionen bieten, die Sie in Ihren Controllern verwenden können. Sippy wird mit Helferklassen (Session_Helper und url_helper) ausgestattet, die Beispiele für die Verwendung von Helfern sind.
Plugins sind buchstäblich alle PHP -Dateien und können alle gewünschten Funktionen bereitstellen. Durch das Laden eines Plugins geben Sie einfach die PHP -Datei aus dem Ordner "Plugins" ein. Dies kann nützlich sein, wenn Sie Bibliotheken von Drittanbietern in Ihrer Sippy -Anwendung verwenden möchten.
Wie man in Controller verwendet ...
protected $sess;
public function __construct() {
parent::__construct();
$this->Helper('Session_helper');
$this->sess = new Session_helper;
}
public function sample() {
$this->sess->set('email', '[email protected]'); //set session variable
$this->sess->get('email'); //get session variable
$this->sess->destroy(); //destroy session, good for logout method
}
Wie man in Controller verwendet ...
public function __construct() {
parent::__construct();
$this->Plugin('Mailer');
}
public function sample() {
$send = Mailer::make()
->setTo('[email protected]', 'ToPerson')
->setFrom('[email protected]', 'Sippy')
->setSubject('Hello World Test')
->setMessage('Test message form sippy')
->setHtml()
->setWrap(100)
->send();
}
Um Sippy zu verlängern, gibt es eine Option, um „Hooks“ hinzuzufügen. Mit Hooks können Sie das gesamte Framework erweitern und/oder Funktionen hinzufügen. Um 'Hooks' zu aktivieren, gehen Sie in Ihre config.php -Datei und aktivieren Sie sie. In der Datei config/Hooks.php fügen Sie dann Ihre Hook -Funktion hinzu. Haken sind global und es gibt drei davon; before_system (lädt vor Systemaufrufen), before_controller (lädt vor Controllern) und after_controller (Lasten nach Controllern). Hier ist ein Beispiel ...
// in hooks.php file
$ hook [ ' before_system ' ] = function () {
echo " hello world " ;
};Dieser Haken wird diese Funktion mit der Aufschrift „Hallo Welt“ global laden. Da Sie nur einmal einen Haken laden können, können Sie sie so stapeln, wenn Sie mehr als eine Funktion aufrufen können, wie sie ...
//... your functions ... function func1() {...do stuff...}
$ hook [ ' before_system ' ] = function () {
func1 ();
func2 ();
func3 ();
};$ PHP bin/sippy.php [Optionen]
versuchen
$ php bin/sippy.php -help