PHPackages                             sowe/framework - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. sowe/framework

ActiveLibrary[Framework](/categories/framework)

sowe/framework
==============

A light and simple DB query framework in native PHP 7

1.5.4(4y ago)02121PHPPHP &gt;=7.1

Since Jan 24Pushed 4y ago2 watchersCompare

[ Source](https://github.com/jsanahuja/Sowe-Framework)[ Packagist](https://packagist.org/packages/sowe/framework)[ RSS](/packages/sowe-framework/feed)WikiDiscussions master Synced 3w ago

READMEChangelog (10)Dependencies (2)Versions (19)Used By (1)

Sowe-Framework
==============

[](#sowe-framework)

- [**Sowe\\Framework\\AbstractEntity**](https://github.com/jsanahuja/Sowe-Framework/blob/master/src/AbstractEntity.php) provides CRUD operations interface. `table` name and table primary `key` must 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**](https://github.com/jsanahuja/Sowe-Framework/blob/master/src/AbstractObject.php) extends `AbstractEntity` but 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**](https://github.com/jsanahuja/Sowe-Framework/blob/master/src/QueryBuilder.php) used by both `AbstractEntity` and `AbstractObject`. Provides a friendly database query builder interface
    - `__construct($type, Database $database)` where $type can be 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()` returns the [**Query**](https://github.com/jsanahuja/Sowe-Framework/blob/master/src/Query.php) object
    - `run()` returns the [**Query**](https://github.com/jsanahuja/Sowe-Framework/blob/master/src/Query.php) 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**](https://github.com/jsanahuja/Sowe-Framework/blob/master/src/Mailer.php) 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()` enables `SMTPDebug`
    - `send()`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**](https://github.com/jsanahuja/Sowe-Framework/blob/master/src/Logger.php) 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();
```

###  Health Score

28

—

LowBetter than 52% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity11

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity61

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~49 days

Recently: every ~200 days

Total

18

Last Release

1522d ago

PHP version history (2 changes)1.0.0PHP ^7.1

1.5.4PHP &gt;=7.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/35cf5aa5a22797c5f00672833fb320490a2e6ad68748be7c2ed0ba50d8eb9359?d=identicon)[jsanahuja](/maintainers/jsanahuja)

---

Top Contributors

[![jsanahuja](https://avatars.githubusercontent.com/u/16489902?v=4)](https://github.com/jsanahuja "jsanahuja (57 commits)")

### Embed Badge

![Health badge](/badges/sowe-framework/health.svg)

```
[![Health](https://phpackages.com/badges/sowe-framework/health.svg)](https://phpackages.com/packages/sowe-framework)
```

###  Alternatives

[matomo/matomo

Matomo is the leading Free/Libre open analytics platform

21.7k38.9k](/packages/matomo-matomo)[tempest/framework

The PHP framework that gets out of your way.

2.2k34.4k15](/packages/tempest-framework)[getkirby/cms

The Kirby core

1.5k584.8k472](/packages/getkirby-cms)[flow-php/flow

PHP ETL - Extract Transform Load - Data processing framework

85036.3k](/packages/flow-php-flow)[doppar/framework

The Doppar Framework

4012.4k14](/packages/doppar-framework)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
