planetbiru / magic-object
魔法对象
Requires
- symfony/yaml: 3.4
README
简介
MagicObject 是一个用于在 PHP 语言中轻松创建应用程序的库。MagicObject 可以派生出其他具有各种用途的类。
以下是一些使用 MagicObject 的示例
- 创建动态对象
- 创建具有设置器和获取器的对象
- 多级对象
- 访问实体
- 过滤和分页
- 导出数据库
- 以 JSON 和 Yaml 格式序列化和反序列化对象
- 从另一个数据库导入数据,目标表和列名可以与源表和列名不同
- 读取 INI、Yaml 和 JSON 文件
- 获取环境变量值
- 加密和解密应用程序配置
- POST、GET、COOKIE、REQUEST、SERVER 中的对象
- PHP 会话
- 对象标签
- 多语言
- 上传文件
- 注解
- 调试对象
安装
要安装 Magic Object
composer require planetbiru/magic-object
或者如果还没有安装 composer
php composer.phar require planetbiru/magic-object
要删除 Magic Object
composer remove planetbiru/magic-object
或者如果还没有安装 composer
php composer.phar remove planetbiru/magic-object
要安装 composer 到您的电脑或下载最新的 composer.phar,请点击 https://getcomposer.org/download/
要查看 MagicObject 的可用版本,请访问 https://packagist.org.cn/packages/planetbiru/magic-object
优点
MagicObject 设计得易于使用,甚至可以使用代码生成器进行编码。MagicAppBuilder 是一个成功的示例,它仅使用参数创建 MagicObject 代码。MagicObject 提供了许多编写代码的方式。用户可以选择最易于实现的方式。
除了关注用户创建应用程序的易用性外,MagicObject 还关注应用程序使用的时间和资源效率,以便应用程序可以在最低配置的服务器上运行。这当然可以节省在应用程序开发和运营中使用的成本。
应用程序扩展
对于大型应用程序,用户可以扩展数据库和存储。这样,用户可以访问任何服务器,使用 Redis 作为会话存储库。MagicObject 使用 Redis 进行会话存储,可以使用密码进行安全保护。
稳定版本
MagicObject 的稳定版本是 1.17.2
或更高版本。请不要安装低于该版本的版本。
教程
教程在此处提供 https://github.com/Planetbiru/MagicObject/blob/main/tutorial.md
示例
简单对象
Yaml
Yaml 文件
result_per_page: 20 song_base_url: ${SONG_BASE_URL} app_name: Music Production Manager user_image: width: 512 height: 512 album_image: width: 512 height: 512 song_image: width: 512 height: 512 database: time_zone_system: Asia/Jakarta default_charset: utf8 driver: ${APP_DATABASE_TYPE} host: ${APP_DATABASE_SERVER} port: ${APP_DATABASE_PORT} username: ${APP_DATABASE_USER} password: ${APP_DATABASE_PASSWORD} database_name: ${APP_DATABASE_NAME} database_schema: public time_zone: ${APP_DATABASE_TIME_ZONE} salt: ${APP_DATABASE_SALT}
配置对象
通过扩展 MagicObject
创建类 ConfigApp
<?php namespace MusicProductionManager\Config; use MagicObject\MagicObject; class ConfigApp extends MagicObject { /** * Constructor * * @param mixed $data Initial data * @param boolean $readonly Readonly flag */ public function __construct($data = null, $readonly = false) { if($data != null) { parent::__construct($data); } $this->readOnly($readonly); } }
<?php $cfg = new ConfigApp(null, true); $cfg->loadYamlFile(dirname(__DIR__)."/.cfg/app.yml", true, true, true); // to get database object, // $cfg->getDatabase() // // to get database.host // $cfg->getDatabase()->getHost() // to get database.database_name // $cfg->getDatabase()->getDatabaseName()
应用程序
使用 MagicObjects 的应用程序包括
- 音乐制作管理器 https://github.com/kamshory/MusicProductionManager
- AppBuilder https://github.com/Planetbiru/AppBuilder
- 伊斯兰储蓄和贷款合作社 https://github.com/kamshory/Koperasi-Simpan-Pinjam-Syariah
- 在线 ToSerba https://toserba-online.top/
致谢
- Kamshory - https://github.com/kamshory/