इसे छोड़कर कंटेंट पर जाएं

Criteria और CriteriaCompo कक्षाएं

Criteria और CriteriaCompo कक्षाएं जटिल डेटाबेस क्वेरीज़ के निर्माण के लिए एक धाराप्रवाह, ऑब्जेक्ट-ओरिएंटेड इंटरफ़ेस प्रदान करती हैं। ये कक्षाएं SQL WHERE क्लॉज को अमूर्त करती हैं, जिससे डेवलपर्स को सुरक्षित और पठनीय रूप से गतिशील क्वेरी बनाने की अनुमति मिलती है।

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 {}
}
use Xoops\Database\Criteria;
use Xoops\Database\CriteriaCompo;
// Single condition
$criteria = new Criteria('status', 'active');
// Renders: `status` = 'active'
// 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
$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 “सुरक्षा और संरक्षा”

Criteria वर्ग SQL इंजेक्शन को रोकने के लिए स्वचालित रूप से मानों से बच जाता है:

// Safe - value is automatically escaped
$userInput = "'; DROP TABLE users; --";
$criteria = new Criteria('username', $userInput);
// Safely renders: `username` = '\''; DROP TABLE users; --'
विधिविवरणवापसी
__construct()एक मानदंड शर्त प्रारंभ करेंशून्य
render($prefix = '')SQL WHERE क्लॉज़ सेगमेंट में रेंडर करेंस्ट्रिंग
getColumn()कॉलम का नाम प्राप्त करेंस्ट्रिंग
getValue()तुलना मूल्य प्राप्त करेंमिश्रित
getOperator()तुलना ऑपरेटर प्राप्त करेंस्ट्रिंग
विधिविवरणवापसी
__construct($logic = 'AND')समग्र मानदंड आरंभ करेंशून्य
add($criteria, $logic = null)मानदंड या नेस्टेड समग्र जोड़ेंशून्य
render($prefix = '')WHERE क्लॉज को पूरा करने के लिए रेंडर करेंस्ट्रिंग
count()मानदंडों की संख्या प्राप्त करेंint
clear()सभी मानदंड हटाएंशून्य

संबंधित दस्तावेज़ीकरण

Section titled “संबंधित दस्तावेज़ीकरण”
  • XoopsDatabase - डेटाबेस वर्ग संदर्भ
  • ../../03-मॉड्यूल-डेवलपमेंट/पैटर्न/रिपोजिटरी-पैटर्न - XOOPS में रिपोजिटरी पैटर्न
  • ../../03-मॉड्यूल-विकास/पैटर्न/सेवा-परत-पैटर्न - सेवा परत पैटर्न

संस्करण जानकारी

Section titled “संस्करण जानकारी”
  • परिचय: XOOPS 2.5.0
  • अंतिम अद्यतन: XOOPS 4.0
  • संगतता: PHP 7.4+