planetbiru/magic-object

1.21.3 2024-09-27 06:12 UTC

README

简介

MagicObject 是一个用于在 PHP 语言中轻松创建应用程序的库。MagicObject 可以派生出其他具有各种用途的类。

以下是一些使用 MagicObject 的示例

  1. 创建动态对象
  2. 创建具有设置器和获取器的对象
  3. 多级对象
  4. 访问实体
  5. 过滤和分页
  6. 导出数据库
  7. 以 JSON 和 Yaml 格式序列化和反序列化对象
  8. 从另一个数据库导入数据,目标表和列名可以与源表和列名不同
  9. 读取 INI、Yaml 和 JSON 文件
  10. 获取环境变量值
  11. 加密和解密应用程序配置
  12. POST、GET、COOKIE、REQUEST、SERVER 中的对象
  13. PHP 会话
  14. 对象标签
  15. 多语言
  16. 上传文件
  17. 注解
  18. 调试对象

安装

要安装 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 的应用程序包括

  1. 音乐制作管理器 https://github.com/kamshory/MusicProductionManager
  2. AppBuilder https://github.com/Planetbiru/AppBuilder
  3. 伊斯兰储蓄和贷款合作社 https://github.com/kamshory/Koperasi-Simpan-Pinjam-Syariah
  4. 在线 ToSerba https://toserba-online.top/

致谢

  1. Kamshory - https://github.com/kamshory/