sowe/framework

此软件包最新版本(1.5.4)没有提供许可信息。

一个轻量级、简单的原生PHP 7数据库查询框架

1.5.4 2022-05-02 23:54 UTC

This package is auto-updated.

Last update: 2024-08-30 01:17:47 UTC


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 同时被 AbstractEntityAbstractObject 使用。提供了一个友好的数据库查询构建器接口
    • __construct($type, Database $database) 其中 $type 可以是 SELECT|UPDATE|INSERT|DELETE
    • table(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();

示例

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();