Kerangka kerja PHP yang ringan dan mudah digunakan untuk membangun situs web dan aplikasi web.
Arsitektur Sippy Bares kemiripan dengan Codeigniter, jadi kami menyebutnya kerangka PHP yang ringan. Namun, ingatlah bahwa karena Sippy ringan, itu tidak termasuk banyak fungsi yang disertai dengan CodeIgniter. Mungkin kita dapat menambahkan fungsionalitas "plug-n-play" melalui plug-in, pengontrol, dan perpustakaan. Untuk menggunakan hapus "sampel" dari file config di aplikasi/config/sample.config.php sehingga aplikasi/config/config.php dan isi data konfigurasi Anda.
Sippy didasarkan pada pola pengembangan model-view-controller.
File spesifik aplikasi Anda masuk ke folder "Aplikasi" (Anda tidak perlu menyentuh folder sistem). Di dalam folder aplikasi ada folder untuk semua entitas aplikasi tertentu:
Config Controllers Pembantu Model Log Model Tampilan Plugin
Ketika Sippy memuat file, ia mengasumsikan mereka ada di folder yang sesuai. Jadi pastikan Anda menempatkan file Anda di folder yang benar.
Kami mendorong Anda untuk menggunakan folder "aset" di root untuk menyimpan file sumber daya statis Anda (CSS, JS dll) namun Anda dapat meletakkannya di mana saja. Anda juga dapat menggunakan fungsi site_url() untuk membantu memasukkan file dalam html atau menggunakan site_url('main/index') untuk pergi ke http://www.yoursite.com/main/index . Misalnya:
< link rel =" stylesheet " href =" <?php echo site_url(); ?>assets/css/style.css " type =" text/css " media =" screen " />Semua kelas di Sippy menggunakan penamaan Pascalcase. Nama file yang terkait harus sama kecuali semua huruf kecil. Jadi misalnya kelas utama kelas akan memiliki nama file mainclass.php. Garis bawah di kelas juga harus dimasukkan dalam nama file.
Secara default, URL di Sippy dirancang untuk menjadi mesin pencari dan ramah manusia. Daripada menggunakan pendekatan "string kueri" standar untuk URL yang identik dengan sistem dinamis, Sippy menggunakan pendekatan berbasis segmen:
example.com/class/function/param By Default Index.php disembunyikan di URL. Ini dilakukan dengan menggunakan file .htaccess di direktori root.
Cukup masukkan file ke dalam proyek Anda untuk otentikasi mudah: https://github.com/trafficinc/sippy-suth
Pengontrol adalah kekuatan pendorong aplikasi sippy. Seperti yang dapat Anda lihat dari struktur URL, segmen URL dipetakan ke kelas dan fungsi. Kelas -kelas ini adalah pengontrol yang disimpan di direktori "Aplikasi/Pengontrol". Jadi misalnya url ...
example.com/main/login ... akan memetakan ke pengontrol berikut dengan nama file Main.php:
<?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! ' ;
}
}... dan outputnya adalah "Halo Dunia!".
Pengontrol dan Pengontrol Kesalahan Default dapat diatur dalam Application/Config/Config.php
Perhatikan bahwa jika Anda perlu mendeklarasikan konstruktor, Anda juga harus memanggil konstruktor induk seperti:
<?php
class Example extends Sippy_controller {
public function __construct ()
{
parent :: __construct ();
// Your own constructor code
}
}
?>Ada beberapa fungsi pembantu yang juga dapat digunakan dalam pengontrol. Sebagian besar fungsi ini mengambil parameter $ nama kelas yang sesuai:
Kesalahan log dan informasi debugging
Kemudian Anda dapat menambahkan kode ini ke pengontrol Anda untuk debugging.
log_message('error','Your log message');log_message('debug','Your log message');Contoh Validasi Pengontrol & Perlindungan Token CSRF & Kesalahan Flash/Pesan Sukses: #Controller `` `memerlukan system_dir. '/Validasi.php'; ###### - Kelas - Validasi $ dilindungi;
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');
}
}
}
```
#melihat
<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>
Di Sippy, tampilan hanyalah halaman web. Mereka dapat berisi semua yang akan disertakan halaman web normal. Tampilan hampir selalu dimuat oleh pengontrol. Jadi misalnya jika Anda memiliki tampilan yang disebut main_view.php yang berisi html berikut:
<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 ();
}
} Kelas tampilan memiliki fungsi penolong yang disebut set($key, $val) yang memungkinkan Anda untuk melewati variabel dari pengontrol ke tampilan.
$ template = $ this -> View ( ' main_view ' );
$ template -> set ( ' someval ' , 17 );
$ template -> render ();... lalu dalam tampilan yang bisa Anda lakukan:
<?php echo $someval; ?>
... dan outputnya adalah 17. Variabel PHP apa pun dapat diteruskan ke tampilan dengan cara ini: array, dll.
ATAU
Di pengontrol Anda dapat memanggil tampilan Anda dengan data yang kemudian akan tersedia di tampilan. Ini bisa dicapai dengan cara. Di Controller ...
$ header = array ( ' title ' => ' My Title ' , ' descr ' => ' Login Page ' , ' keywords ' => ' login,page,mysample ' );
$ template = $ this -> View ( ' main/index ' , $ d );Dalam tampilan, item array ini dapat diakses seperti ...
<?php echo $title; ?>
Yang akan menunjukkan teks "judul saya", dan seterusnya untuk sisa array.
Cara yang disukai untuk mengakses data dalam tampilan adalah dengan memberi nama array data dan mengaksesnya di pengontrol seperti ...
$ data [ ' body ' ] = " Hello World " ;
$ data [ ' heading ' ] = array ( ' title ' => ' My Title ' , ' descr ' => ' Login Page ' , ' keywords ' => ' login,page,mysample ' );
$ template = $ this -> View ( ' main/index ' , $ data );Lalu dalam pandangan ...
//body can be accessed
<?php echo $ body ; ?>
//heading can be accessed as an array
<?php
foreach ( $ heading as $ head ) {
echo $ head [ ' title ' ];
. . . etc.
}
?> Dalam model Sippy adalah kelas yang menangani data (biasanya dari database), database sampel disediakan, memuat file testdb.sql ke sekuel Pro atau SQL GUI pilihan Anda. Misalnya:
<?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 ;
}
}
?>... lalu dalam pengontrol yang akan Anda lakukan:
function index ()
{
$ example = $ this -> Model ( ' Example_model ' );
$ data [ ' something ' ] = $ example -> getSomething ( $ id );
$ template = $ this -> View ( ' main_view ' , $ data );
$ template -> render ();
} Sekarang hasil kueri basis data Anda akan tersedia dalam pandangan Anda di $ someval. Menghubungkan ke database MySQL dapat dilakukan di file config/config.php Anda (ingat untuk mengganti nama file sample.config.php ):
$ config [ ' db_host ' ] = '' ; // Database host (e.g. localhost)
$ config [ ' db_name ' ] = '' ; // Database name
$ config [ ' db_username ' ] = '' ; // Database username
$ config [ ' db_password ' ] = '' ; // Database passwordAda beberapa fungsi pembantu yang juga dapat digunakan dalam model:
query($query) - Mengembalikan serangkaian hasil dari kuerigetrow($query) - mengembalikan satu baris dari kuerigetrowobj($query) - mengembalikan baris sebagai objekexecute($query) - Mengembalikan hasil langsung dari kueriescape($string) - Escape Strings Sebelum menggunakannya dalam kueriinsert($table, $dataArray) - Masukkan ke dalam tabel dengan arrayAda pemanggang di html helper yang dapat Anda gunakan dalam pengontrol dan tampilan melalui $ this-> html-> esc () dan banyak lagi, di url Anda saat Anda menjalankan sippy pergi ke url utama/tes untuk melihat fungsionalitas yang tersedia.
Ada dua jenis sumber daya tambahan yang dapat Anda gunakan di Sippy.
Pembantu adalah kelas yang dapat Anda gunakan yang tidak termasuk dalam kategori "pengontrol". Ini biasanya akan menjadi kelas yang menyediakan fungsionalitas tambahan yang dapat Anda gunakan di pengontrol Anda. Sippy dilengkapi dengan kelas helper (session_helper dan url_helper) yang merupakan contoh cara menggunakan pembantu.
Plugin secara harfiah adalah file PHP dan dapat memberikan fungsionalitas apa pun yang Anda inginkan. Dengan memuat plugin, Anda hanya memasukkan file PHP dari folder "plugin". Ini bisa berguna jika Anda ingin menggunakan perpustakaan pihak ketiga di aplikasi Sippy Anda.
Bagaimana menggunakan, di controller ...
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
}
Bagaimana menggunakan, di controller ...
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();
}
Untuk memperluas Sippy, ada opsi untuk menambahkan "kait". Hooks memungkinkan Anda untuk memperluas seluruh kerangka kerja dan/atau menambahkan fungsionalitas. Untuk mengaktifkan 'Hooks' masuk ke file config.php Anda dan mengaktifkannya. Kemudian di file config/hooks.php Tambahkan fungsi kait Anda. Kait bersifat global dan ada tiga di antaranya; before_system (memuat sebelum panggilan sistem), before_controller (memuat sebelum pengontrol), dan after_controller (memuat setelah pengontrol). Inilah contohnya ...
// in hooks.php file
$ hook [ ' before_system ' ] = function () {
echo " hello world " ;
};Kait ini akan secara global memuat fungsi ini yang bertuliskan "halo dunia". Karena Anda hanya dapat memuat kait satu kali, jika Anda memiliki lebih dari satu fungsi untuk dihubungi, Anda dapat menumpuknya seperti ...
//... your functions ... function func1() {...do stuff...}
$ hook [ ' before_system ' ] = function () {
func1 ();
func2 ();
func3 ();
};$ php bin/sippy.php [opsi]
mencoba
$ php bin/sippy.php -help