jimwins/titi
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
jimwins/titi 适用场景与选型建议
jimwins/titi 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 2.7k 次下载、GitHub Stars 达 2, 最近一次更新时间为 2020 年 05 月 17 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「orm」 「activerecord」 「query builder」 「idiorm」 「paris」 「titi」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 jimwins/titi 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 jimwins/titi 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 jimwins/titi 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
ActiveRecord for API
CalendarView widget for Yii 2 Framework.
Kinikit - PHP Application development framework MVC component
PHP Database ORM for Symfony1. Do NOT use for new projects: please move to a newest Symfony release and Doctrine2
Query filtering in your frontend
Anax Database Active Record module for model classes.
统计信息
- 总下载量: 2.7k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 3
- 点击次数: 35
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: BSD-2-Clause
- 更新时间: 2020-05-17