کلاس های Criteria و CriteriaCompo
کلاس های Criteria و CriteriaCompo یک رابط شی گرا و روان برای ساخت پرس و جوهای پیچیده پایگاه داده ارائه می کنند. این کلاسها بندهای SQL WHERE را انتزاعی میکنند، و به توسعهدهندگان اجازه میدهند تا کوئریهای پویا را به صورت ایمن و قابل خواندن بسازند.
نمای کلی کلاس
Section titled “نمای کلی کلاس”کلاس معیار
Section titled “کلاس معیار”کلاس Criteria یک شرط واحد را در یک عبارت WHERE نشان می دهد:
namespace XOOPS\Database;
class Criteria{ protected $column; protected $operator; protected $value; protected $function;
public function __construct( string $column, mixed $value = null, string $operator = '=', string $function = '' ) {}
public function render(string $prefix = ''): string {}}استفاده اولیه
Section titled “استفاده اولیه”معیارهای ساده
Section titled “معیارهای ساده”use XOOPS\Database\Criteria;use XOOPS\Database\CriteriaCompo;
// Single condition$criteria = new Criteria('status', 'active');// Renders: `status` = 'active'اپراتورهای مختلف
Section titled “اپراتورهای مختلف”// Equality (default)$criteria = new Criteria('status', 'active', '=');
// Not equal$criteria = new Criteria('status', 'active', '<>');
// Greater than$criteria = new Criteria('age', 18, '>');
// Less than or equal$criteria = new Criteria('age', 65, '<=');
// LIKE (for pattern matching)$criteria = new Criteria('email', '%@example.com', 'LIKE');
// IN (for multiple values)$criteria = new Criteria('status', ['active', 'pending', 'review'], 'IN');پرس و جوهای مجتمع ساختمانی
Section titled “پرس و جوهای مجتمع ساختمانی”و منطق (پیشفرض)
Section titled “و منطق (پیشفرض)”$criteria = new CriteriaCompo();$criteria->add(new Criteria('status', 'active'));$criteria->add(new Criteria('age', 18, '>='));$criteria->add(new Criteria('verified', 1));// Renders: `status` = 'active' AND `age` >= 18 AND `verified` = 1یا منطق
Section titled “یا منطق”$criteria = new CriteriaCompo('OR');$criteria->add(new Criteria('role', 'admin'));$criteria->add(new Criteria('role', 'moderator'));$criteria->add(new Criteria('role', 'editor'));ادغام با الگوی مخزن
Section titled “ادغام با الگوی مخزن”مثال مخزن
Section titled “مثال مخزن”namespace MyModule\Repository;
use XOOPS\Database\XoopsDatabase;use XOOPS\Database\Criteria;use XOOPS\Database\CriteriaCompo;
class UserRepository{ private $db; private $table = 'users';
public function __construct(XoopsDatabase $db) { $this->db = $db; }
public function findByCriteria(CriteriaCompo $criteria): array { $sql = "SELECT * FROM {$this->table}";
if ($criteria->count() > 0) { $sql .= " WHERE " . $criteria->render(); }
$result = $this->db->query($sql); $users = [];
while ($row = $this->db->fetchArray($result)) { $users[] = new User($row); }
return $users; }}ایمنی و امنیت
Section titled “ایمنی و امنیت”فرار خودکار
Section titled “فرار خودکار”کلاس Criteria به طور خودکار از مقادیر برای جلوگیری از تزریق SQL فرار می کند:
// Safe - value is automatically escaped$userInput = "'; DROP TABLE users; --";$criteria = new Criteria('username', $userInput);// Safely renders: `username` = '\''; DROP TABLE users; --'مرجع API
Section titled “مرجع API”روشهای معیار
Section titled “روشهای معیار”| روش | توضیحات | بازگشت |
|---|---|---|
__construct() | راه اندازی یک شرط معیار | خالی |
render($prefix = '') | رندر به بخش عبارت SQL WHERE | رشته |
getColumn() | دریافت نام ستون | رشته |
getValue() | دریافت مقدار مقایسه | مخلوط |
getOperator() | دریافت عملگر مقایسه | رشته |
معیارها روشهای Compo
Section titled “معیارها روشهای Compo”| روش | توضیحات | بازگشت |
|---|---|---|
__construct($logic = 'AND') | مقداردهی اولیه معیارهای ترکیبی | خالی |
add($criteria, $logic = null) | افزودن معیار یا ترکیب تو در تو | خالی |
render($prefix = '') | برای تکمیل عبارت WHERE رندر کنید | رشته |
count() | دریافت تعداد معیارها | int |
clear() | حذف همه معیارها | خالی |
مستندات مرتبط
Section titled “مستندات مرتبط”- XoopsDatabase - مرجع کلاس پایگاه داده
- ../../03-Module-Development/Patterns/Repository-Pattern - الگوی مخزن در XOOPS
- ../../03-Module-Development/Patterns/Service-Layer-Pattern - الگوی لایه سرویس
اطلاعات نسخه
Section titled “اطلاعات نسخه”- معرفی شد: XOOPS 2.5.0
- آخرین به روز رسانی: XOOPS 4.0
- سازگاری: PHP 7.4+