Janggelan เป็นเฟรมเวิร์ก PHP ที่ไม่คาดคิดที่ช่วยให้คุณง่ายขึ้น มันเรียบง่าย แต่ทรงพลังและน่าพึงพอใจที่จะใช้ เช่นเดียวกับเฟรมเวิร์กอื่น ๆ คุณจะไม่ได้รับความยากลำบากเมื่อพยายามทำความเข้าใจ Janggelan
Janggelan ได้รับการออกแบบและมุ่งเน้นตามแนวคิด MVC ดังนั้นเราพยายามหลีกเลี่ยงการรวมระบบ MVC เข้ากับเครื่องมืออื่น ๆ ที่อาจช่วยคุณในการพัฒนาเพราะสามารถลดประสิทธิภาพได้ เราเก็บไว้อย่างแน่นอนเพื่อช่วยในการพัฒนาของคุณ แต่มันจะมาพร้อมกับปกที่แตกต่างกัน
โปรดอ่านเอกสารสำหรับข้อมูลเพิ่มเติม
เรารู้ว่าเราไม่สามารถทำกรอบนี้ให้เสร็จสมบูรณ์ได้อย่างสมบูรณ์แบบและอาจไม่สอดคล้องกับสิ่งที่คุณต้องการ แต่เราพยายามทำให้ดีขึ้นเสมอและทำให้มันไม่คาดคิดสำหรับคุณ คุณสามารถมีส่วนร่วมกับเรา
เพิ่มเครื่องมือใหม่
เขียนสคริปต์ทั้งหมดของ Janggelan เพื่อประสิทธิภาพที่ดีขึ้นใหม่
ลดการโหลดเซิร์ฟเวอร์บางส่วน
เพิ่มวิธี Model ใหม่บางอย่าง: where() , exec() , execute()
เพิ่มเอกสาร
ใช้การแคชและการบีบอัด gZip บน. .htaccess
Php 7
PDO PHP Extension
ดาวน์โหลดไฟล์ของ Janggelan ดึงไปยังไดเรกทอรีของแอปพลิเคชันของคุณ
หากคุณต้องการเผยแพร่หรือติดตั้ง Janggelan สำหรับโฮสติ้งที่ใช้ร่วมกันวิธีที่ปลอดภัยที่สุดคือวางไฟล์และไดเรกทอรีของ Janggelan ภายใน server root และย้ายเนื้อหาทั้งหมดของโฟลเดอร์ public ไปยัง public_html หรือ www
คุณจะเรียกใช้แอปพลิเคชันของคุณจาก public / public_html / www Directory
หากคุณพบปัญหาหลังจากการติดตั้งโปรดตรวจสอบสิทธิ์ไฟล์
__ backend/
|__ .secrets/
|__ config/
|__ framework/
|__ global/
|__ register/
|__ vendor/
|__ autoload.php
|__ composer.json
|__ force.uri
__ public/
|__ assets/
|__ .htaccess
|__ index.php
__ worksheet/
|__ controllers/
|__ model/
|__ providers/
|__ tools/
|__ views/
|__ requests.php
ในครั้งแรกให้เรียกใช้ Janggelan ในเซิร์ฟเวอร์ของคุณ ตรวจสอบให้แน่ใจว่าระบบของคุณทำตาม System Requirements และ installation ด้านบน
ไปที่ไดเรกทอรีแอปพลิเคชันของคุณที่วางไฟล์ Janggelan เข้าสู่โฟลเดอร์ public ตัวอย่างเช่นใน Linux คุณสามารถทำได้ด้วยสิ่งนี้:
cd /var/www/html/your_application/publicเปิดเซิร์ฟเวอร์ localhost:
php -S localhost:8000หรือคุณสามารถทำได้ข้างต้นโดยตรงด้วยคำสั่งนี้:
php -S localhost:8000 -t /var/www/html/your_application/publicตอนนี้เปิดเบราว์เซอร์ของคุณและเยี่ยมชม LocalHost: 8000
ใน Janggelan คุณจะเรียกสิ่งนี้ว่าเป็น requests ในเฟรมเวิร์ก PHP อื่น ๆ เช่น Laravel สิ่งนี้เรียกว่าเป็น routes ทุกคำขอใน Janggelan จัดการบน worksheet/requests.php หากต้องการสร้างคำขอใหม่ให้ไปที่ไฟล์นั้น คุณจะเห็นตัวอย่าง request เช่นนี้:
$ this -> request ( ' GET / @Hello::world ' ); ตัวอย่างด้านบนมีค่าเฉลี่ย: "ขอ URI / ด้วยวิธีการ GET หากผู้ใช้เยี่ยมชม / และ URI นั้นถูกต้องมันจะถูกเปลี่ยนเส้นทางและดำเนินการต่อไปยังคอนโทรลเลอร์ Hello ด้วยวิธีการ / ฟังก์ชั่น world " จากตัวอย่างตอนนี้คุณสามารถสร้างคำขอที่กำหนดเองของคุณด้วยตัวเลือกเหล่านี้: (อาร์กิวเมนต์หรือพารามิเตอร์ 1 ถูกคั่นด้วย space ):
// Redirected to Controller.
// Request method can be 'GET' or 'POST'
$ this -> request ( ' GET /home @Hello::world ' );
// Redirected to View.
$ this -> request ( ' GET /home (viewName) ' );
// Redirected to Controller with Protected Rule 'login'.
$ this -> request ( ' GET /home @Hello::world !!login ' );
// Redirected to View with Protected Rule 'login'.
$ this -> request ( ' GET /home (viewName) !!login ' );
// Will proceed the Closure or Callback directly.
$ this -> request ( ' GET /home ' , function ()
{
// Do some stuff...
});
// Will proceed the Closure or Callback directly with Protected Rule 'login'.
$ this -> request ( ' GET /home !!login ' , function ()
{
// Do some stuff...
}); คุณจะได้เรียนรู้เพิ่มเติมเกี่ยวกับ Protected Rule ในภายหลัง หมายเหตุใช้ Closure หรือ Callback เฉพาะเมื่อคุณอยู่ในการทดสอบ เราขอแนะนำให้ใช้ View หรือ Controller เป็นการเปลี่ยนเส้นทาง
Controller S ถูกวางไว้ใน worksheet/controllers ลองสร้าง Controller ใหม่ด้วยการสร้างไฟล์ใหม่สมมติว่าชื่อไฟล์คือ MyController.php จากนั้นใน MyController.php เขียนสไตล์ Controller พื้นฐานนี้:
<?php namespace controller ;
class MyController extends framework parents Controller
{
public function welcome ()
{
echo ' Welcome to my Controller. ' ;
}
} บน worksheet/requests.php เพิ่มคำขอใหม่ที่จะดำเนินการ Controller
$ this -> request ( ' GET /test @MyController::welcome ' ); ตอนนี้เยี่ยมชม /test บนเบราว์เซอร์ของคุณ หากทุกอย่างโอเคคุณจะเห็นผลลัพธ์: Welcome to my Controller. - ชื่อไฟล์ Controller ต้องเหมือนกันและจับคู่กับชื่อคลาส Controller นอกจากนี้คุณต้องดูแล Namespace หากคุณสร้างคอนโทรลเลอร์ภายในไดเรกทอรีใหม่เช่นนี้:
__ controllers/
|__ my_new_folder/
|__ MyController.php
จากนั้น Namespace ของ Controller ของคุณควรเป็นเช่นนี้: (ใช้กับระบบเนมสเปซทั้งหมดด้วย)
<?php namespace controllers my_new_folder ;
class MyController extends framework parents Controller
{
//
} คุณสามารถหลีกเลี่ยงการขยาย frameworkparentsController หาก Controller ของคุณไม่จำเป็นต้องใช้ฟังก์ชั่นในตัวเช่น $this->LOAD_VIEW() , $this->GET_RULE() ฯลฯ
Model S ถูกวางไว้ใน worksheet/models Model ใช้ในการสื่อสารกับฐานข้อมูล ดังนั้นเมื่อคุณสร้าง Model ให้แน่ใจว่าสอดคล้องกับข้อมูลของคุณในฐานข้อมูล หากต้องการใช้ Model คุณต้องตั้งค่าการกำหนดค่าฐานข้อมูลของคุณใน backend/.secrets/.db หรือดูเอกสารเกี่ยวกับ Configuring Database
หลังจากทำข้างต้นเสร็จแล้วให้ลองสร้าง Model ก่อนอื่นให้สร้างไฟล์ใหม่ใน worksheet/models สมมติว่าชื่อไฟล์คือ User.php จากนั้นเขียนเนื้อหาของไฟล์ด้วยสไตล์ Model พื้นฐานนี้:
<?php namespace model ;
class User extends framework parents Model
{
// This is your table name. It is required by system.
protected static $ table = ' user ' ;
// This is your table columns. Only required if you want to create new
// table into Database.
protected static $ columns = [
' id ' => ' INT(11) AUTO_INCREMENT PRIMARY KEY ' ,
' username ' => ' VARCHAR(255) NOT NULL ' ,
' password ' => ' VARCHAR(255) NOT NULL '
];
} ใน Controller ของคุณโทรไปที่คลาส Model :
<?php namespace controller ;
use model User ;
class MyController extends framework parents Controller
{
public function workingWithModel ()
{
// Initialize object of Model 'User'.
// Now you can use your Model.
$ user = new User ;
}
} หากคุณไม่มีตารางที่มี user ชื่อมาก่อนเพียงแค่ใช้เมธอด create() เพื่อสร้างตารางโดยอัตโนมัติเมื่อคุณเรียกใช้เมธอด Controller workingWithModel()
$ user = new User ;
// this will create new table into Database with columns and properties that
// already defined on 'protected static $columns'.
$ user -> create (); เกือบเสร็จแล้วตอนนี้คุณแค่ต้องใช้ Model กับฟังก์ชั่นหรือวิธีการในตัว
$ user = new User ;
// Open Database connection manually. Only needed if 'auto_connect' config is FALSE.
$ user -> open ();
// Close Database connection manually. Only needed if 'auto_connect' config is FALSE.
$ user -> close ();
// Delete all data in Model 'User' | table 'user'.
$ user -> delete ();
// Delete all data in Model 'User' | table 'user' | where id = 1 and username = name.
$ user -> delete ([ ' id ' => 1 , ' username ' => ' name ' ]);
// Insert new data to Model 'User' | table 'user' | to column username with value
// 'Linus Torvald'.
$ user -> insert ([ ' username ' => ' Linus Torvald ' ]);
// Update data in Model 'User' | table 'user' | where id = 1. Update username
// to value 'Linus Torvald'.
$ user -> update ([ ' username ' => ' Linus Torvald ' ], [ ' id ' => 1 ]);
// Get all data from Model 'User' | table 'user'.
$ user -> get ();
// Get 5 data results from Model 'User' | table 'user'.
$ user -> get ( 5 );
// Select all data from column 'username' of Model 'User' | table 'user'.
$ user -> select ( ' username ' )-> get ();
// Get data from column 'username' of Model 'User' | table 'user' | take 4 data results
// start from data number 2.
$ user -> range ( 4 , 2 )-> get ();
// Get data from Model 'User' | table 'user' | based on the clause 'WHERE id = 1'.
// You can do anything inside of 'clause()'.
$ user -> clause ( ' WHERE id = 1 ' )-> get ();
// Select data from column 'username' of Model 'User' | table 'user' |
// where id = 1 AND username = 'Linus Torvald'.
$ user -> where ([ ' id ' => 1 , ' username ' => ' Linus Torvald ' ])-> get ();
// Exec query.
// 'query' is anything sql queries such as 'DELETE * FROM' or 'SELECT *'.
$ user -> exec (query);
// Execute query with bind params (PDO prepare statement).
$ user -> execute (query, bindParams);
// You can custom you queries with chaining functions or methods like this:
$ user -> select ( ' username ' )-> range ( 4 , 2 )-> get ();
// Using prepare statement
$ user -> clause ( ' WHERE id=:id ' )-> bindParams ([ ' id ' => 1 ])-> get (); View S ถูกวางไว้ใน worksheet/views โดยทั่วไป View เป็นเทมเพลตสามารถเป็น HTML หรือรหัส PHP ไม่มีกฎพิเศษสำหรับ View แต่ใน Janggelan ส่วนขยาย View คือ .php เสมอ คุณสามารถเขียนรหัสอะไรก็ได้ภายใน View ในการใช้ View คุณเพียงแค่ต้องเรียกมันว่า ตัวอย่าง:
// Calling View 'example.php' on requests.php
// Note that you cannot calling View with Closure or Callback.
$ this -> request ( ' GET / (example) ' );
// Calling View 'example.php' inside folder 'new_folder' on requests.php
$ this -> request ( ' GET / (new_folder/example) ' );
// Calling View 'example.php' on Controller
$ this -> LOAD_VIEW ( ' example ' );
// Calling View 'example.php' inside folder 'new_folder' on Controller
$ this -> LOAD_VIEW ( ' new_folder/example ' ); หากคุณต้องการวาง View ด้านนอก worksheet/views ไปยังทุกที่ใน public หรือ public_html หรือไดเรกทอรี www คุณเพียงแค่ต้องเพิ่ม / ::
$ this -> request ( ' GET / (/example) ' );
$ this -> LOAD_VIEW ( ' /example ' ); ที่จะบอกให้ระบบค้นหา View บน public/example.php หรือ public_html/example.php หรือ www/example.php
ตอนนี้วิธีการส่งข้อมูลใน View จริงๆแล้วคุณสามารถทำได้ง่าย เพียงแค่ compact() ข้อมูล: โปรดทราบว่าการส่งข้อมูลเป็นไปได้เฉพาะเมื่อเรียก View โดย Controller
$ data = ' This is data ' ;
$ this -> LOAD_VIEW ( ' example ' , compact ( ' data ' )); จากนั้นในตัวอย่างไฟล์ View example.php เพียงเรียกตัวแปร:
<p> <?php echo $ data ; ?> </p> Janggelan จัดหาเครื่องมือบางอย่างที่คุณสามารถใช้และอาจเป็นประโยชน์สำหรับกรณีการพัฒนาของคุณ พวกเขาอยู่ใน worksheet/tools หากต้องการใช้พวกเขาเพียงแค่ต้องโทรหาชื่อชั้นเรียนของพวกเขา ตัวอย่าง:
<?php namespace controller ;
use tool Validation ;
class Example extends framework parents Controller
{
private $ validation ;
function __construct ()
{
$ this -> validation = new Validation ;
}
} Protected Rule เป็นระบบใน Janggelan เพื่อปกป้อง page View หรือ Uri ของคุณเช่นเดียวกับระบบเข้าสู่ระบบ Protected Rule เก็บข้อมูลที่ไม่ระบุชื่อซึ่งจะตรวจสอบเสมอเมื่อ request ใช้ระบบนี้ หากผู้ใช้ที่เข้าชมไม่มีข้อมูลที่ไม่ระบุชื่อที่ถูกต้องผู้ใช้จะถูกเปลี่ยนเส้นทางไปยัง target โดยอัตโนมัติที่กำหนดไว้ก่อนหน้านี้ สิ่งนี้จะง่ายต่อการปกป้องหน้าเว็บที่คุณต้องการทำให้เป็นส่วนตัวหรือสำหรับผู้ใช้บางรายเท่านั้น
ในการสร้าง Protected Rule ใหม่ให้ไปที่ไฟล์กำหนดค่าบน backend/config/protected.php คุณสามารถสร้าง Protected Rule มากกว่าหนึ่งกฎ ตัวอย่าง:
<?php return [
// FALSE means, system will uses SESSION to store protected_rule data. Set it TRUE
// if you want to store the data in COOKIE.
' use_cookie ' => FALSE ,
' protected_rule ' => [
// Creating 'Protected Rule' with name 'login'.
// If the data is not valid, then redirect to Controller 'Example'
// method 'protected.'
' login ' => [
' on_false ' => [
' controller ' => ' Example ' ,
' method ' => ' protected '
],
],
// Creating 'Protected Rule' with name 'protect'.
// If the data is not valid, then redirect to View 'example'.
' protect ' => [
' on_false ' => [
' view ' => ' example ' ,
],
],
// Creating 'Protected Rule' with name 'myRule'.
// If the data is not valid, then redirect to uri '/wrong'.
' myRule ' => [
' on_false ' => ' /wrong '
],
]
]; จากนั้นในการใช้ Protected Rule นั้นไปที่ worksheet/requests.php และเพิ่ม Request ใหม่: (ไวยากรณ์คือ !! ):
// Applying Protected Rule 'login'.
$ this -> request ( ' GET / @Example::example !!login ' );
$ this -> request ( ' GET / (viewName) !!login ' );
$ this -> request ( ' GET / !!login ' , function ()
{
echo ' If you see this, then you are an Admin. ' ;
}); วิธีการตั้งค่าข้อมูลที่ถูกต้องสำหรับผู้ใช้หรือ Protected Rule เพียงใช้ฟังก์ชั่นหรือวิธีการที่สร้างขึ้นนี้
$ this -> SET_RULE ( $ name ); นอกจากนี้คุณยังสามารถส่งผ่านค่าไปยังข้อมูล Protected Rule :
$ this -> SET_RULE ( $ name , $ values ); นี่คือฟังก์ชั่นหรือวิธีการที่สมบูรณ์สำหรับ Protected Rule :
// Check valid data for user or 'Protected Rule';
$ this -> CHECK_RULE ( $ name );
// Set new valid data for user or 'Protected Rule'.
$ this -> SET_RULE ( $ name , $ data = '' );
// Get 'Protected Rule' data.
$ this -> GET_RULE ( $ name );
// Delete valid 'Protected Rule' data.
$ this -> DESTROY_RULE ( $ name ); ในการกำหนดค่าฐานข้อมูลของคุณโปรดไปที่ backend/.secrets/.db มีวัตถุเพื่อกำหนดค่าฐานข้อมูลของคุณ:
{ "DB_HOST" : " " , "DB_NAME" : " " , "DB_USERNAME" : " " , "DB_PASSWORD" : " " }ตั้งค่าทุกค่าคีย์ด้วยการกำหนดค่าฐานข้อมูลของคุณ
โดยค่าเริ่มต้น Janggelan จะได้รับการตรวจสอบ URI สำหรับไดเรกทอรี หาก URI อ้างถึงโฟลเดอร์หรือไดเรกทอรี ISSET ระบบ Janggelan จะไม่เริ่มต้นเพราะมันผ่านการเปลี่ยนเส้นทางไปยังโฟลเดอร์หรือไดเรกทอรีนั้น หากคุณไม่ต้องการให้สิ่งนี้เกิดขึ้นให้เปิดไฟล์ backend/force.uri และเขียนค่าเก่าให้ TRUE
Dali Kewara | [email protected]
Janggelan เป็นเฟรมเวิร์ก PHP แบบเปิดโล่งที่ได้รับอนุญาตภายใต้ใบอนุญาต MIT