OBS: このパッケージは、MinasORM パッケージに置き換えられました。
日常業務を支援し、セキュリティと透明性を備えたデータベースとの通信プロセスを高速化するために開発された小規模な CRUD プロジェクト。
パッケージをダウンロードしてインストールするためのいくつかの注意事項と段階的な手順。
SimplePHP使用できるようにするには、次のものが必要です。
PHP ^7.2.5
EXT-PDO *
SimplePHP 、composer.jsonまたはコマンド ターミナル経由でインストールできます。
composer require nicollassilva/ SimplePHP
またはcomposer.json :
"nicollassilva/ SimplePHP ": "^1.9"
>>>>>>> Stashed changes
データベースへの接続を構成するには、 SourceRootConfig.phpにアクセスする必要があります。検索されるファイルの例:
protected $ config = [
" driver " => " mysql " ,
" hostname " => " localhost " ,
" charset " => " utf8mb4 " ,
" port " => 3306 ,
" username " => " root " ,
" password " => "" ,
" database " => "" ,
" timezone " => " America/Sao_Paulo " ,
" pathLog " => __DIR__ . " /../../../../../your-log.log " ,
" options " => [
PDO :: ATTR_ERRMODE => PDO :: ERRMODE_EXCEPTION ,
PDO :: ATTR_CASE => PDO :: CASE_NATURAL ,
PDO :: ATTR_ORACLE_NULLS => PDO :: NULL_EMPTY_STRING
]
];
データベースの構成が完了したら、モデルを配置するプロジェクトのルートにフォルダーを作成し、クラスを作成します。
namespace Models ;
use SimplePHP Model SimplePHP ;
class User extends SimplePHP {
function __construct ()
{
/**
* @param string Table Name
* @param string Primary Key
*/
parent :: __construct ( ' users ' , ' id ' );
}
}
これまでのすべての手順が完了したら、プロジェクトのルートにindex.phpを作成し、コンポーザーの自動ロードとモデルクラスにrequireを指定します。その後、モデルをインスタンス化すると、 SimplePHPの使用を開始できます。以下に例を示します。
require " vendor/autoload.php " ;
require " models/user.php " ;
use Models User ;
$ userModel = new User ();
$ user = $ userModel -> find ()-> execute ();
致命的なエラー: キャッチされないエラー: クラス ' SimplePHP Model SimplePHP ' が見つかりません
これを修正するには、プロジェクトのルート フォルダーで次のコマンドを実行します。
composer dump -o
use Models User ;
$ userModel = new User ();
/** find all users */
$ user = $ userModel -> find ()-> execute ();
/** find user by id */
$ user = $ userModel -> find ( 5 )-> execute ();
/** find users and return the total result count */
$ count = $ userModel -> count ()-> execute ();
/** find user with one where */
$ user = $ userModel -> where ([
[ ' name ' , ' = ' , ' Nicollas ' ]
])-> execute ();
/** find user with several where. Conditional AND default */
$ user = $ userModel -> where ([
[ ' name ' , ' = ' , ' John ' ],
[ ' email ' , ' = ' , ' [email protected] ' ]
])-> execute ();
/** find user with LIKE. Conditional AND default */
$ user = $ userModel -> where ([
[ ' name ' , ' LIKE ' , ' %Guilherme% ' ],
[ ' email ' , ' = ' , ' [email protected] ' ]
])-> execute ();
/** find user with conditional where. Condicional OR */
$ user = $ userModel -> where ([
[ ' name ' , ' LIKE ' , ' %Nicollas% ' ],
[ ' name ' , ' LIKE ' , ' %Nicolas% ' ]
], ' OR ' )-> execute ();
/** find users by name = Nicollas OR name = Nicolas */
$ user = $ userModel -> where ([
[ ' name ' , ' = ' , ' Nicollas ' ]
])
-> orWhere ([
[ ' name ' , ' = ' , ' Nicolas ' ]
])-> execute ();
/** find user using the basic structure query */
$ user = $ userModel -> whereRaw ( " name = 'Nicollas' " )-> execute ();
/** find users with limit */
$ user = $ userModel -> limit ( 5 )-> execute ();
/** find users with limit & offset */
$ user = $ userModel -> limit ( 5 )-> offset ( 5 )-> execute ();
/** find users with skip & take | the same as limit & offset */
$ user = $ userModel -> take ( 5 )-> skip ( 5 )-> execute ();
/** find users with orderBy. second parameter optional, default ASC */
$ user = $ userModel -> orderBy ( ' id ' , ' DESC ' )-> orderBy ( ' name ' )-> execute ();
/** find users and return results as attributes. EXAMPLE: $user->name instead of $user['name'] */
$ user = $ userModel -> find ()-> execute ( true );
/** find users with specific columns. */
$ user = $ userModel -> find ()-> only ([ ' name ' , ' id ' , ' email ' ])-> execute ();
/** find users creating exceptions in columns. */
$ user = $ userModel -> find ( 5 )-> except ([ ' password ' ])-> execute ();
/** search in other database table */
$ user = ( new User ())-> useTable ( ' posts ' )-> find ()-> where ([[ ' owner_id ' , ' = ' , $ user -> id ]])-> execute ();
/** debug query for possible errors | return string */
$ user = $ userModel -> whereRaw ( " uuid = 'f031b537-672f-4fba-b8a6-af45e778ad93' " )-> debugQuery ();
/** group by method */
$ user = $ userModel -> groupBy ( ' id ' );
注: Except()メソッドは、 execute(true)メソッドと連鎖して動作せず、パラメータ true のないexecute()のみが動作します。
注:例外()メソッドは特定の情報を検索する場合にのみ機能し、多次元配列では機能しません。これはすぐに修正される予定です。
すべてのメソッドは相互に友好的であるため、複雑なクエリを作成できます。実際の例:
/** Search for a user's posts varying between the privacy in which it was saved */
/** You can pass false as a fourth argument, the class will understand that you are trying to relate tables and will not put single quotes */
$ posts = ( new User ())-> useTable ( ' posts p, users u ' )
-> where ([[ ' u.id ' , ' = ' , $ user [ ' id ' ] ?? $ visit [ ' id ' ]],
[ ' u.id ' , ' = ' , ' p.user_id ' , false ], /** example of the fourth argument for relating tables */
[ ' p.privacity ' , ' <= ' , isset ( $ privacity ) && is_array ( $ privacity ) ? 3 : ( $ visit [ ' url ' ] != $ flag ? 1 : 4 )]])
-> only ([ ' p.* ' , ' u.name ' , ' u.url ' , ' u.i_profile ' ])
-> limit ( 10 )
-> orderBy ( ' p.id ' )
-> execute ();
use Models User ;
$ userModel = new User ();
$ user = $ userModel -> find ( 3 )-> execute ( true );
/** @return null|bool */
if ( $ user -> destroy ()) {
echo " Success delete! " ;
}
use Models User ;
$ userModel = new User ();
$ user = $ userModel -> find ( 5 )-> execute ( true );
$ user -> name = " Other name " ;
$ user -> email = " [email protected] " ;
/** @return null|bool */
if ( $ user -> save ()) {
echo " Success! " ;
}
use Models User ;
$ userModel = new User ();
$ user = $ userModel -> find ( 8 )-> only ([ ' id ' , ' name ' ])-> execute ( true );
$ user -> name = " Russian Gabolev " ;
$ user -> email = " [email protected] " ;
/** This informations was not called from the database, but they exist. */
$ user -> updated_at = time ();
/** @return null|bool */
if ( $ user -> save ()) {
echo " Success! " ;
}
use Models User ;
$ userModel = new User ();
$ user = $ userModel -> request ([
" name " => " Dr. Haylie Bahringer " ,
" email " => ' [email protected] ' ,
" password " => 123456 // Encrypt before sending to the database
])-> create ();
直接配列を渡すことによっても可能です。
use Models User ;
$ userModel = new User ();
$ _POST = [
" name " => " Hadjei Moccab " ,
" email " => " [email protected] " ,
" password " => 123456 // Encrypt before sending to the database
];
$ user = $ userModel -> request ( $ _POST )-> create ();
use Models User ;
$ userModel = new User ();
$ user = $ userModel -> find ( 18 )-> execute ( true );
/** @return string | @param string $hash, @param Array $options */
$ user -> password = $ userModel -> hashFormat ( $ _POST [ ' password ' ]);
/** @return string | @param string $url */
$ user -> home = $ userModel -> urlFormat ( ' Dr. John,Sik!@ ' ); // dr-john-sik
/** @return bool | @param string $email */
if (! $ userModel -> validateEmail ( $ _POST [ ' email ' ])) {
echo " Invalid email! " ;
}
/** @return bool | @param string $pass */
if (! $ userModel -> validatePassword ( $ _POST [ ' password ' ])) {
echo " Invalid password! " ;
}
/** @return bool | @param string $phone */
if (! $ userModel -> validatePhone ( $ _POST [ ' telephone ' ])) {
echo " Invalid telephone! " ;
}
/** @return bool | @param int $size */
$ user -> recovery_token = $ userModel -> aleatoryToken ( 15 );
$ user -> save ()
"Pác^kà@gê Sí#mp%lePHP" -> "pac-ka-ge-si-mp-lephp"
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
123456 // false
QUASE123! // false
#OpA1 // false
#essaSenhaEGrande1234 // false
#OpA1? // true
Foi123! // true
(00)0000-0000
(00)00000-0000
0000-0000
00000-0000
SimplePHPによってエラーが生成されると、フォルダー構成で構成されたディレクトリにエラーが表示され、 monolog パッケージによってレポートが生成されます。
このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細については、LICENSE.md ファイルを参照してください。