SimplePHP
v1.9
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 ,在 Composer 自动加载和模型类中给出一个 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() 链接使用。
注意: except()方法仅在查找特定信息时有效,在多维数组中不起作用。这个问题很快就会得到解决。
所有方法都彼此友好,这意味着您可以进行复杂的查询。真实例子:
/** 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 文件