คลาสที่ทำให้การจัดการกับการเชื่อมต่อฐานข้อมูลเป็นเรื่องง่าย ระบบ CRUD แบบสากลที่สามารถเปลี่ยนแทนกันได้
นี่คือ เวอร์ชัน 5 ที่จะทำลายผู้ใช้ เวอร์ชัน 4
ส่วนใหญ่โดย:
การใช้ namespace
ในไฟล์ฟังก์ชัน global
ezFunctions.php การใช้ฟังก์ชัน ส่วนกลาง จะต้องให้ผู้ใช้เริ่มไฟล์ .php
บางอย่างเช่น:
use function ezsql functions where ;
// Or
use function ezsql functions {
getInstance ,
selecting ,
inserting ,
};
คุณสมบัติคลาสที่สามารถเข้าถึงได้โดยวิธีเวทย์มนตร์ get/set
ตอนนี้เป็น PSR 1 camelCase
เปลี่ยนชื่อ select
ของ ez_mysqli
เป็น dbSelect
เปลี่ยนชื่อวิธีการเรียนและพฤติกรรมของ selecting
เพื่อ select
selecting
และวิธี inserting
ใหม่ สามารถเรียกได้โดยไม่ต้องใช้ชื่อตาราง เฉพาะพารามิเตอร์ที่จำเป็นอื่น ๆ เท่านั้น:
tableSetup(name, prefix), or setTable(name), setPrefix(append)
หากเรียกโดยไม่ตั้งค่าล่วงหน้า จะส่งคืน false
ing
ลงท้าย ลบฟังก์ชันส่วนกลางที่มีการส่งชื่อ table
ให้ใช้ฟังก์ชันโดยใช้ชื่อตารางที่ตั้งไว้ล่วงหน้าที่ลงท้ายด้วย ing
เปลี่ยนชื่อ cleanInput เป็น clean_string
เปลี่ยนชื่อ createCertificate เป็น create_certificate
เพิ่ม global get_results เพื่อส่งคืนชุดผลลัพธ์ในรูปแบบที่แตกต่างกัน
เวอร์ชัน 4 มีแนวปฏิบัติด้านการเขียนโปรแกรมสมัยใหม่มากมาย ซึ่งจะทำให้ผู้ใช้เวอร์ชัน 3 เสียหาย
เวอร์ชัน 3 ทำลายเวอร์ชัน 2.1.7 ด้วยวิธีสำคัญอย่างหนึ่ง มันต้องใช้ PHP 5.6 การสนับสนุนส่วนขยาย mysql ที่ลดลง นอกเหนือจากนั้นไม่มีอะไรเปลี่ยนแปลงไปจากการใช้ไลบรารี มีเพียงคุณสมบัติเพิ่มเติมเท่านั้น
ไลบรารีนี้มีคลาส Database
ซึ่งเป็นการผสมผสานระหว่างรูปแบบ Factory ที่มีการโฮสต์คอนเทนเนอร์ Dependency Injection ขณะนี้ไลบรารีนี้ปฏิบัติตามหลักการ OOP หลายประการ ประการหนึ่งคือ วิธีการคุณสมบัติการเข้าถึงแบบสาธารณะได้ถูกลบออกไปแล้ว ไลบรารีนี้ยังเป็นไปตามแบบแผน PSR-2, PSR-4, PSR-11 และส่วนใหญ่เป็น PSR-1 ซึ่งยังคงอยู่ในระหว่างดำเนินการ
สำหรับภาพรวมทั้งหมด โปรดดูเอกสารประกอบ Wiki ซึ่งยังไม่เสร็จสมบูรณ์
composer require ezsql/ezsql
require ' vendor/autoload.php ' ;
// **** is one of mysqli, pgsql, sqlsrv, sqlite3, or Pdo.
use ezsql Database ;
$ db = Database:: initialize ( ' **** ' , [ $ dsn_path_user , $ password , $ database , $ other_settings ], $ optional_tag );
// Is same as:
use ezsql Config ;
use ezsql Database ez_ ****;
$ settings = new Config ( ' **** ' , [ $ dsn_path_user , $ password , $ database , $ other_settings ]);
$ db = new ez_ ****( $ settings );
ไลบรารีนี้จะถือว่านักพัฒนาใช้ IDE บางประเภทที่เปิดใช้งาน Intellisense พื้นที่ความคิดเห็น/บล็อกเอกสารจะเก็บเอกสารที่ขาดหายไป สำหรับตัวอย่างเพิ่มเติม โปรดดูการทดสอบ phpunit การทดสอบเป็นการทดสอบบูรณาการการทำงานเต็มรูปแบบ ซึ่งหมายความว่าเป็นการทดสอบฐานข้อมูลสด ไม่มีการเยาะเย้ย
มีการเพิ่มสิ่งต่อไปนี้ตั้งแต่เวอร์ชัน 2.1.7
วิธีการทั่วไป
to_string($arrays, $separation = ',');
clean($string);
create_cache(string $path = null);
secureSetup(string $key = 'certificate.key',
string $cert = 'certificate.crt',
string $ca = 'cacert.pem',
string $path = '.'._DS
);
secureReset();
create_certificate(string $privatekeyFile = certificate.key,
string $certificateFile = certificate.crt,
string $signingFile = certificate.csr,
string $ssl_path = null, array $details = [commonName => localhost]
);
วิธีการตารางทางลัด
create(string $table = null, ...$schemas);// $schemas requires... column()
column(string $column = null, string $type = null, ...$args);
primary(string $primaryName, ...$primaryKeys);
index(string $indexName, ...$indexKeys);
drop(string $table);
ตัวอย่าง
// Creates an database table
create ( ' profile ' ,
// and with database column name, datatype
// data types are global CONSTANTS
// SEQUENCE|AUTO is placeholder tag, to be replaced with the proper SQL drivers auto number sequencer word.
column ( ' id ' , INTR , 11 , AUTO , PRIMARY ), // mysqli
column ( ' name ' , VARCHAR , 50 , notNULL),
column ( ' email ' , CHAR , 25 , NULLS ),
column ( ' phone ' , TINYINT )
);
innerJoin(string $leftTable = null, string $rightTable = null,
string $leftColumn = null, string $rightColumn = null, string $tableAs = null, $condition = EQ);
leftJoin(string $leftTable = null, string $rightTable = null,
string $leftColumn = null, string $rightColumn = null, string $tableAs = null, $condition = EQ);
rightJoin(string $leftTable = null, string $rightTable = null,
string $leftColumn = null, string $rightColumn = null, string $tableAs = null, $condition = EQ);
fullJoin(string $leftTable = null, string $rightTable = null,
string $leftColumn = null, string $rightColumn = null, string $tableAs = null, $condition = EQ);
prepareOn (); // When activated will use prepare statements for all shortcut SQL Methods calls.
prepareOff (); // When off shortcut SQL Methods calls will use vendors escape routine instead. This is the default behavior.
having(...$having);
groupBy($groupBy);
union(string $table = null, $columnFields = '*', ...$conditions);
unionAll(string $table = null, $columnFields = '*', ...$conditions);
orderBy($orderBy, $order);
limit($numberOf, $offset = null)
where( ...$whereConditions);
select(string $table = null, $columnFields = '*', ...$conditions);
create_select(string $newTable, $fromColumns, $oldTable = null, ...$conditions);
select_into(string $newTable, $fromColumns, $oldTable = null, ...$conditions);
update(string $table = null, $keyAndValue, ...$whereConditions);
delete(string $table = null, ...$whereConditions);
replace(string $table = null, $keyAndValue);
insert(string $table = null, $keyAndValue);
create(string $table = null, ...$schemas);
drop(string $table = null);
alter(string $table = null, ...$alteringSchema);
insert_select(string $toTable = null, $toColumns = '*', $fromTable = null, $fromColumns = '*', ...$conditions);
// The variadic ...$whereConditions, and ...$conditions parameters,
// represent the following global functions.
// They are comparison expressions returning an array with the given arguments,
// the last arguments of _AND, _OR, _NOT, _andNOT will combine expressions
eq ( ' column ' , $ value , _AND ), // combine next expression
neq ( ' column ' , $ value , _OR ), // will combine next expression again
ne ( ' column ' , $ value ), // the default is _AND so will combine next expression
lt ( ' column ' , $ value )
lte ( ' column ' , $ value )
gt ( ' column ' , $ value )
gte ( ' column ' , $ value )
isNull ( ' column ' )
isNotNull ( ' column ' )
like ( ' column ' , ' _%? ' )
notLike ( ' column ' , ' _%? ' )
in ( ' column ' , ... $ value )
notIn ( ' column ' , ... $ value )
between ( ' column ' , $ value , $ value2 )
notBetween ( ' column ' , $ value , $ value2 )
// The above should be used within the where( ...$whereConditions) clause
// $value will protected by either using escape or prepare statement
// To allow simple grouping of basic $whereConditions,
// wrap the following around a group of the above comparison
// expressions within the where( ...$whereConditions) clause
grouping ( eq (key, value, combiner ), eq (key, value, combiner ) )
// The above will wrap beginning and end grouping in a where statement
// where required to break down your where clause.
// Note: The usage of this method will require the user/developer to check
// if `query_string` or `param_array` is valid.
//
// This is really an `private` internal method for other shortcut methods,
// it's made public for `class development` usage only.
//
//
// Supply the the whole `query` string, and placing '?' within, with the same number of arguments in an array.
// It will then determine arguments type, execute, and return results.
query_prepared (string $ query_string , array $ param_array );
// You will need to call this method to get last successful query result.
// It wll return an object array.
queryResult ();
// To get all shortcut SQL methods calls to use prepare statements
$ db -> prepareOn (); // This needs to be called at least once at instance creation
$ values = [];
$ values [ ' name ' ] = $ user ;
$ values [ ' email ' ] = $ address ;
$ values [ ' phone ' ] = $ number ;
$ db -> insert ( ' profile ' , $ values );
$ db -> insert ( ' profile ' , [ ' name ' => ' john john ' , ' email ' => ' john@email ' , ' phone ' => 123456 ]);
// returns result set given the table name, column fields, and ...conditions
$ result = $ db -> select ( ' profile ' , ' phone ' , eq ( ' email ' , $ email ), between ( ' id ' , 1 , $ values ));
foreach ( $ result as $ row ) {
echo $ row -> phone ;
}
$ result = $ db -> select ( ' profile ' , ' name, email ' ,
// Conditionals can also be called, stacked with other functions like:
// innerJoin(), leftJoin(), rightJoin(), fullJoin()
// as (leftTable, rightTable, leftColumn, rightColumn, tableAs, equal condition),
// where( eq( columns, values, _AND ), like( columns, _d ) ),
// groupBy( columns ),
// having( between( columns, values1, values2 ) ),
// orderBy( columns, desc ),
// limit( numberOfRecords, offset ),
// union(table, columnFields, conditions),
// unionAll(table, columnFields, conditions)
$ db -> where ( eq ( ' phone ' , $ number , _OR ), neq ( ' id ' , 5 ) ),
// another way: where( array(key, operator, value, combine, combineShifted) );
// or as strings double spaced: where( "key operator value combine combineShifted" );
$ db -> orderBy ( ' name ' ),
$ db -> limit ( 1 )
);
foreach ( $ result as $ row ) {
echo $ row -> name . ' ' . $ row -> email ;
}
// To get results in `JSON` format
$ json = get_results ( JSON , $ db );
$ db -> query_prepared ( ' INSERT INTO profile( name, email, phone) VALUES( ?, ?, ? ); ' , [ $ user , $ address , $ number ]);
$ db -> query_prepared ( ' SELECT name, email FROM profile WHERE phone = ? OR id != ? ' , [ $ number , 5 ]);
$ result = $ db -> queryResult (); // the last query that has results are stored in `lastResult` protected property
// Or for results in other formats use the global function, will use global database instance if no `$db` supplied
$ result = get_results ( / * OBJECT | ARRAY _ A | ARRAY _ N | JSON */ , $ db ); // Defaults to `OBJECT`
foreach ( $ result as $ row ) {
echo $ row -> name . ' ' . $ row -> email ;
}
วิธีทางลัดส่วนใหญ่มี ฟังก์ชัน ตัวนับ ทั่วโลก ให้เลือกใช้ สามารถเข้าถึงได้โดยการเริ่มไฟล์ .php
ของคุณเท่านั้น เช่น:
use function ezsql functions functionBelow ;
// Or as here, a complete list.
use function ezsql functions {
database ,
mysqlInstance ,
pgsqlInstance ,
mssqlInstance ,
sqliteInstance ,
pdoInstance ,
tagInstance ,
setInstance ,
getInstance ,
clearInstance ,
get_vendor ,
///
to_string ,
clean_string ,
is_traversal ,
sanitize_path ,
create_certificate ,
///
column ,
primary ,
foreign ,
unique ,
index ,
addColumn ,
dropColumn ,
changingColumn ,
///
eq ,
neq ,
ne ,
lt ,
lte ,
gt ,
gte ,
isNull ,
isNotNull ,
like ,
in ,
notLike ,
notIn ,
between ,
notBetween ,
///
where ,
grouping ,
groupBy ,
having ,
orderBy ,
limit ,
innerJoin ,
leftJoin ,
rightJoin ,
fullJoin ,
union ,
unionAll ,
///
creating ,
deleting ,
dropping ,
replacing ,
selecting ,
inserting ,
altering ,
get_results ,
table_setup ,
set_table ,
set_prefix ,
select_into ,
insert_select ,
create_select ,
};
สำหรับ การใช้งานฟังก์ชัน/เอกสาร โปรดดูที่ ezFunctions.php
การสนับสนุนและการต้อนรับ; ฉันยินดีเสมอที่ได้รับคำติชมหรือดึงคำขอบน Github :) สร้างปัญหา Github สำหรับข้อบกพร่องและคุณสมบัติใหม่ และแสดงความคิดเห็นเกี่ยวกับสิ่งที่คุณสนใจ
ezsql เป็นซอฟต์แวร์โอเพ่นซอร์สที่ได้รับอนุญาตภายใต้ (LGPL-3.0) และส่วนเสริมภายใต้ (MIT)