jimwins/titi
最新稳定版本:v0.0.7
Composer 安装命令:
composer require jimwins/titi
包简介
A lightweight nearly-zero-configuration object-relational mapper and fluent query builder for PHP, plus a lightweight ActiveRecord implementation
README 文档
README
Titi is a lightweight nearly-zero-configuration object-relational mapper and fluent query builder for PHP, plus a lightweight ActiveRecord implementation.
Titi was forked from Idiorm and Paris (combined into a single repo).
Tested on PHP 8.1.16 and MySQL 8.0.32 - may work on earlier versions with PDO and the correct database drivers.
Released under a BSD license.
Features
- Makes simple queries and simple CRUD operations completely painless.
- Gets out of the way when more complex SQL is required.
- Built on top of PDO.
- Uses prepared statements throughout to protect against SQL injection attacks.
- Requires no model classes, no XML configuration and no code generation: works out of the box, given only a connection string.
- Consists of one main class called
ORM. Additional classes are prefixed withTiti. Minimal global namespace pollution. - Database agnostic. Currently supports SQLite, MySQL, Firebird and PostgreSQL. May support others, please give it a try!
- Supports collections of models with method chaining to filter or apply actions to multiple results at once.
- Multiple connections supported
- PSR-1 compliant methods (any method can be called in camelCase instead of underscores eg.
find_many()becomesfindMany()) - you'll need PHP 5.3+
Documentation
The documentation is hosted on Read the Docs: titi.rtfd.io.
Building the Docs
You will need to install Sphinx and then in the docs folder run:
make html
The documentation will now be in docs/_build/html/index.html
Let's See Some Code
require 'vendor/autoload.php'; use \Titi\ORM; use \Titi\Model; $user = ORM::for_table('user') ->where_equal('username', 'j4mie') ->find_one(); $user->first_name = 'Jamie'; $user->save(); $tweets = ORM::for_table('tweet') ->select('tweet.*') ->join('user', array( 'user.id', '=', 'tweet.user_id' )) ->where_equal('user.username', 'j4mie') ->find_many(); foreach ($tweets as $tweet) { echo $tweet->text; } /* ActiveRecord model */ class User extends Model { public function tweets() { return $this->has_many('Tweet'); } } class Tweet extends Model {} $user = Model::factory('User') ->where_equal('username', 'j4mie') ->find_one(); $user->first_name = 'Jamie'; $user->save(); $tweets = $user->tweets()->find_many(); foreach ($tweets as $tweet) { echo $tweet->text; }
Tests
Tests are written with PHPUnit and be run through composer
composer test
To see the test progress and results:
composer -v test
统计信息
- 总下载量: 2.7k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 3
- 点击次数: 2
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: BSD-2-Clause
- 更新时间: 2020-05-17