sowe / framework
A light and simple DB query framework in native PHP 7
Installs: 212
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
pkg:composer/sowe/framework
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 provides CRUD operations interface.
tablename and table primarykeymust be defined as static variables.__construct(Database $database)get($id, $fields = ["*"])list($fields = ["*"], $filters = null)update($id, $data)create($data)delete($id)Example
class MyEntity extends AbstractEntity{ protected static $table = "myentity"; protected static $key = "id"; } $entities = new MyEntity(); // loads all entities $all = $entities->list();
- Sowe\Framework\AbstractObject extends
AbstractEntitybut also provides resource format interface.__construct(Database $database)new()load($id)save()remove()getData($field)setData($field, $value)Example
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 used by both
AbstractEntityandAbstractObject. Provides a friendly database query builder interface__construct($type, Database $database)where $type can be 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()returns the Query objectrun()returns the Query object after running the Example
$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 an interface to send mails using 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()enablesSMTPDebugsend()Example
$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 extends Monolog\Logger to prepend file and line where the log was originated.
Example
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();