sowe / framework
此软件包最新版本(1.5.4)没有提供许可信息。
一个轻量级、简单的原生PHP 7数据库查询框架
1.5.4
2022-05-02 23:54 UTC
Requires
- php: >=7.1
- monolog/monolog: ^2.0
- phpmailer/phpmailer: ^6.1
Suggests
- ext-mbstring: Required for Keychain class
- ext-mysqli: Required for Database and Query classes
README
- Sowe\Framework\AbstractEntity 提供CRUD操作接口。必须将
table
名称和表主键key
定义为静态变量。__construct(Database $database)
get($id, $fields = ["*"])
list($fields = ["*"], $filters = null)
update($id, $data)
create($data)
delete($id)
示例
class MyEntity extends AbstractEntity{ protected static $table = "myentity"; protected static $key = "id"; } $entities = new MyEntity(); // loads all entities $all = $entities->list();
- Sowe\Framework\AbstractObject 扩展了
AbstractEntity
,同时也提供了资源格式接口。__construct(Database $database)
new()
load($id)
save()
remove()
getData($field)
setData($field, $value)
示例
class MyResource extends AbstractObject{ protected static $table = "myresource"; protected static $key = "id"; } $resources = new MyResource(); // Updating resource $resources->load(10) ->setData("name", "Jonh") ->setData("lastname", "Doe") ->save();
- Sowe\Framework\QueryBuilder 同时被
AbstractEntity
和AbstractObject
使用。提供了一个友好的数据库查询构建器接口__construct($type, Database $database)
其中 $type 可以是 SELECT|UPDATE|INSERT|DELETEtable(string $table, string $alias = null)
fields(...$fields)
set($field, $value)
condition($field, $operator, $value)
conditions($conditions)
or()
limit($offset, $limit = null)
innerJoin($table, $alias, $field1, $operator, $field2)
leftJoin($table, $alias, $field1, $operator, $field2)
rightJoin($table, $alias, $field1, $operator, $field2)
join($type, $table, $alias, $field1, $operator, $field2)
order($field, $order)
group(...$fields)
build()
返回 Query 对象run()
运行示例后返回 Query 对象
$qb = new QueryBuilder("SELECT", $database); $data = $qb->table("users") ->fields("id", "email", "role") ->condition("username", "=", "jdoe") ->run() //returns Query object ->fetchAll() // this is from Query object.
- Sowe\Framework\Mailer 使用 PHPMailer 发送邮件的接口
__construct($hostname, $username, $password, $sender, $sendername, $auth = true, $security = PHPMailer::ENCRYPTION_STARTTLS)
new()
to($address, $name = '')
cc($address)
bcc($address)
subject($subject)
body($body)
htmlbody($body)
altbody($body)
attachment($path, $name = '', $encoding = 'base64', $type = '', $disposition = 'attachment')
debug()
启用SMTPDebug
send()
示例
$mailer = new Mailer($host, $user, $pass, $sender, $sendername); $mailer->new() ->to("bannss1@gmail.com", "Javier") ->cc("admin@sowecms.com") ->subject("Test Sowe/Framework/Mailer") ->body("This is a test message sent with Sowe/Framework/Mailer") ->send();
- Sowe\Framework\Logger 扩展了 Monolog\Logger 以在日志的开头添加文件和行号。
示例
use Sowe\Framework\Logger; use Monolog\ErrorHandler; use Monolog\Handler\StreamHandler; use Monolog\Formatter\LineFormatter; $logpath = __DIR__ . "/logs/log.log"; $logger = new Logger(""); $formatter = new LineFormatter( "[%datetime%]:%level_name%: %message% %context%\n", "Y-m-d\TH:i:s", true, /* allow break lines */ true /* ignore empty contexts */ ); $stream = new StreamHandler($logpath, Logger::DEBUG); $stream->setFormatter($formatter); $logger->pushHandler($stream); $handler = new ErrorHandler($logger); $handler->registerErrorHandler([], false); $handler->registerExceptionHandler(); $handler->registerFatalHandler();