一些用于与 Doctrine 一起工作的基础库。包括模板化电子邮件队列、审核字符串等。

0.1.2 2015-03-24 21:07 UTC

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安装

  1. 将Noizu Core包添加到您的项目composer.json文件中
"require": {
    "noizu-labs/core": "dev-master"
}
  1. 运行以下命令以安装该包及其依赖项
composer install

设置

  1. 配置数据库连接:创建一个包含您的数据库凭据的db_settings.php文件。您可以使用提供的db_settings.php.sample作为模板。
  2. Bootstrap Doctrine:在应用程序的入口点中包含Doctrine引导文件。
require_once(__DIR__ . '/vendor/noizu-labs/core/src/NoizuLabs/Core/Doctrine/bootstrap.php');
  1. 依赖注入配置:根据您的应用程序需要,配置Pimple容器中的必要服务和参数。

  2. 其他设置:设置任何其他配置选项,例如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(); 
}