noizu-labs / core
一些用于与 Doctrine 一起工作的基础库。包括模板化电子邮件队列、审核字符串等。
Requires
- doctrine/orm: 2.*
- noizu-labs/fragmented-keys: 0.2.*
- noizu-labs/php-conform: 0.1.*
- pimple/pimple: 1.*
This package is not auto-updated.
Last update: 2024-09-24 01:58:24 UTC
README
Noizu Domain Objects 是一套用于简化 Doctrine ORM 开发的核心组件和工具集。它提供各种功能,包括领域对象管理、审核字符串、电子邮件队列、用户管理、文件上传等。这些组件旨在为构建健壮和可扩展的 PHP 应用程序提供一个坚实的基础。
功能
Doctrine ORM 集成
Noizu Core 利用 Doctrine ORM 的强大功能,这是一个流行的 PHP 对象关系映射器 (ORM)。通过使用 Doctrine,项目受益于以下方面:
- 简化数据库交互:Doctrine 允许开发者以对象的形式与数据库记录交互,使交互更直观、更高效。
- 实体关系管理:Doctrine 简化了实体之间关系的管理,确保数据完整性和一致性。
- 数据库抽象:项目对特定数据库系统的依赖性降低,便于迁移和适应。
示例
// Retrieve a user entity using Doctrine Entity Manager $entityManager = $container['EntityManager']; $user = $entityManager->find('NoizuLabs\Core\Doctrine\Entity\Users', 1);
领域对象
Noizu Core 实现了领域对象模式,它将业务逻辑和数据封装在对象中。这种方法提供了以下优势:
- 关注点分离:领域对象明确地将业务逻辑与数据访问和表示逻辑分开,促进可维护性和代码复用。
- 数据完整性:领域对象确保数据一致性并执行业务规则,防止无效数据进入系统。
- 可测试性:领域对象可以轻松独立测试,从而提高代码质量和可靠性。
示例
// Using the User domain object to manage user data $user = new NoizuLabs\Core\DomainObject\User(); $user->load(1); // Load user with ID 1 $user->setEmail('new_email@example.com'); $user->save(); // Persist changes to the database
审核字符串
项目包括一个强大的字符串管理系统。该功能特别适用于需要审查和批准后才发布文本内容的情况。主要功能包括:
- 变更日志:跟踪对字符串所做的更改,包括时间戳、作者和操作。
- 待审和已批准文本:允许字符串处于待审或已批准状态,确保只有经过审查的内容才上线。
- 版本历史:提供对字符串更改历史的访问。
示例
// Creating a new moderated string $ms = $container['Do_Repository_ModeratedStrings']; $moderatedString = $ms->createModeratedString("This is a new string", 1, $user); // Editing a moderated string $moderatedString->edit("This is an updated string", array('author' => $adminUser));
电子邮件模板队列
Noizu Core 提供了一个复杂的电子邮件队列系统,用于使用模板创建和发送电子邮件。主要功能包括:
- 模板管理:定义和管理带有友好名称、主题和正文内容的电子邮件模板。
- 数据绑定:使用占位符和替换标签将动态数据绑定到电子邮件模板。
- 队列处理:将电子邮件排队以供稍后交付,并异步处理它们。
- 错误处理:处理电子邮件处理过程中的错误,并提供详细日志。
示例
// Queueing an email using a template $emailQueue = $container['Do_Repository_TemplatedEmailQueue']; $emailQueue->queueEmail($templateId, $user, $emailData); // Processing the email queue $queuedEmail = $emailQueue->getReadyToSend(1); $queuedEmail->send();
用户管理
项目包括基本用户管理功能,例如:
- 用户创建:允许创建具有基本信息(如用户名、密码和电子邮件)的新用户帐户。
- 用户认证:支持用户登录和认证。
- 用户数据管理:启用管理用户数据和配置文件。
示例
// Creating a new user $userRepository = $container['Do_Repository_Users']; $user = $userRepository->createUser($userData);
文件上传
Noizu Core 提供了导入和上传文件的辅助函数。这些函数简化了以下过程:
- 文件类型验证:确保上传的文件具有正确的扩展名。
- 文件存储:处理在指定目录中存储上传的文件。
- 文件管理:提供管理上传文件的功能。
示例
// Uploading a file $domainObject->uploadFile($subDir, $tmpPath, $originalFileName, $allowedExtensions);
错误和警告日志
该项目实现了一个全面的日志系统,用于捕获错误、警告和调试信息。该系统有助于
- 错误跟踪:在应用程序执行过程中识别和跟踪错误。
- 调试:提供调试和故障排除问题的有价值信息。
- 应用程序监控:允许监控应用程序的健康状况和性能。
示例
// Logging an error message $domainObject->LogError("400:002", "Invalid Field - $field must be set");
权限管理(进行中)
该项目似乎有一个权限管理和访问控制的框架,但标记为“进行中”。可能需要进一步开发以提供完整的权限管理功能。
便捷方法
Noizu Core包含了一些便捷方法来简化常见任务
- 将实体转换为数组:允许轻松将Doctrine实体转换为数组,以便进一步处理或数据传输。
- 检索所有实体并分页:提供了一种方法,可以检索特定类型的所有实体,并支持分页。
- 生成唯一标识符:提供生成唯一GUID的方法。
示例
// Retrieving all users with pagination $users = $userDomainObject->getAllEntitiesArray(1, 20);
安装和设置
先决条件
在安装Noizu Core之前,请确保您有以下先决条件
- PHP 5.3或更高版本:项目需要一个兼容的PHP版本。
- Composer:需要一个PHP依赖管理工具进行安装。
- 数据库系统:需要一个支持的数据库系统,如MySQL。
- Doctrine ORM:使用Composer安装Doctrine ORM。
通过Composer安装
- 将Noizu Core包添加到您的项目
composer.json
文件中
"require": { "noizu-labs/core": "dev-master" }
- 运行以下命令以安装该包及其依赖项
composer install
设置
- 配置数据库连接:创建一个包含您的数据库凭据的
db_settings.php
文件。您可以使用提供的db_settings.php.sample
作为模板。 - Bootstrap Doctrine:在应用程序的入口点中包含Doctrine引导文件。
require_once(__DIR__ . '/vendor/noizu-labs/core/src/NoizuLabs/Core/Doctrine/bootstrap.php');
-
依赖注入配置:根据您的应用程序需要,配置Pimple容器中的必要服务和参数。
-
其他设置:设置任何其他配置选项,例如
Settings.UploadFolder
用于文件上传,并根据您的具体要求自定义项目。
使用示例
审核字符串
创建受审查的字符串
// Instantiate the ModeratedStrings repository $moderatedStringsRepository = $container['Do_Repository_ModeratedStrings']; // Create a new moderated string with initial text and type $moderatedString = $moderatedStringsRepository->createModeratedString( "Initial string content", 1, // String type ID $user // Author of the string ); // Save the moderated string $moderatedString->save();
编辑受审查的字符串
// Load the moderated string you want to edit $moderatedString->load($stringId); // Edit the string content $moderatedString->edit("Updated string content", array('author' => $adminUser));
电子邮件模板队列
排队电子邮件
// Instantiate the TemplatedEmailQueue repository $emailQueueRepository = $container['Do_Repository_TemplatedEmailQueue']; // Define email data $emailData = array( 'userName' => $user->getUserName(), 'verificationLink' => $verificationLink ); // Queue the email using a specific template and user $queuedEmail = $emailQueueRepository->queueEmail( $templateId, // Email template ID $user, $emailData );
处理电子邮件队列
// Retrieve emails ready to be sent $queuedEmails = $emailQueueRepository->getReadyToSend(10); // Get up to 10 emails // Send each queued email foreach ($queuedEmails as $queuedEmail) { $queuedEmail->send(); }