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

XoopsObject कक्षा

XoopsObject वर्ग XOOPS सिस्टम में सभी डेटा ऑब्जेक्ट के लिए मौलिक आधार वर्ग है। यह ऑब्जेक्ट गुणों, सत्यापन, डर्टी ट्रैकिंग और क्रमबद्धता के प्रबंधन के लिए एक मानकीकृत इंटरफ़ेस प्रदान करता है।

namespace Xoops\Core;
class XoopsObject
{
protected array $vars = [];
protected array $cleanVars = [];
protected bool $isNew = true;
protected array $errors = [];
}
XoopsObject
├── XoopsUser
├── XoopsGroup
├── XoopsModule
├── XoopsBlock
├── XoopsComment
├── XoopsNotification
├── XoopsConfig
└── [Custom Module Objects]
संपत्तिप्रकारदृश्यताविवरण
$varsसारणीसंरक्षितपरिवर्तनीय परिभाषाओं और मूल्यों को संग्रहीत करता है
$cleanVarsसारणीसंरक्षितडेटाबेस संचालन के लिए स्वच्छ मूल्यों को संग्रहीत करता है
$isNewबूलसंरक्षितइंगित करता है कि क्या वस्तु नई है (अभी डेटाबेस में नहीं है)
$errorsसारणीसंरक्षितसत्यापन और त्रुटि संदेश संग्रहीत करता है
public function __construct()

एक नया XoopsObject उदाहरण बनाता है। ऑब्जेक्ट को डिफ़ॉल्ट रूप से नए के रूप में चिह्नित किया गया है।

उदाहरण:

$object = new XoopsObject();
// Object is new and has no defined variables

ऑब्जेक्ट के लिए एक वैरिएबल परिभाषा प्रारंभ करता है।

public function initVar(
string $key,
int $dataType,
mixed $value = null,
bool $required = false,
int $maxlength = null,
string $options = ''
): void

पैरामीटर:

पैरामीटरप्रकारविवरण
$keyस्ट्रिंगपरिवर्तनीय नाम
$dataTypeintडेटा प्रकार स्थिरांक (डेटा प्रकार देखें)
$valueमिश्रितडिफ़ॉल्ट मान
$requiredबूलक्या फ़ील्ड आवश्यक है
$maxlengthintस्ट्रिंग प्रकारों के लिए अधिकतम लंबाई
$optionsस्ट्रिंगअतिरिक्त विकल्प

डेटा प्रकार:

लगातारमूल्यविवरण
XOBJ_DTYPE_TXTBOX1टेक्स्ट बॉक्स इनपुट
XOBJ_DTYPE_TXTAREA2पाठक्षेत्र सामग्री
XOBJ_DTYPE_INT3पूर्णांक मान
XOBJ_DTYPE_URL4URL स्ट्रिंग
XOBJ_DTYPE_EMAIL5ईमेल पता
XOBJ_DTYPE_ARRAY6क्रमबद्ध सरणी
XOBJ_DTYPE_OTHER7कस्टम प्रकार
XOBJ_DTYPE_SOURCE8स्रोत कोड
XOBJ_DTYPE_STIME9अल्प समय प्रारूप
XOBJ_DTYPE_MTIME10मध्यम समय प्रारूप
XOBJ_DTYPE_LTIME11दीर्घकालीन प्रारूप
XOBJ_DTYPE_FLOAT12फ़्लोटिंग पॉइंट
XOBJ_DTYPE_DECIMAL13दशमलव संख्या
XOBJ_DTYPE_ENUM14गणना

उदाहरण:

class MyObject extends XoopsObject
{
public function __construct()
{
parent::__construct();
$this->initVar('id', XOBJ_DTYPE_INT, null, false);
$this->initVar('title', XOBJ_DTYPE_TXTBOX, '', true, 255);
$this->initVar('content', XOBJ_DTYPE_TXTAREA, '', false);
$this->initVar('email', XOBJ_DTYPE_EMAIL, '', true, 100);
$this->initVar('created', XOBJ_DTYPE_INT, time(), false);
$this->initVar('status', XOBJ_DTYPE_INT, 1, true);
}
}

किसी वेरिएबल का मान सेट करता है.

public function setVar(
string $key,
mixed $value,
bool $notGpc = false
): bool

पैरामीटर:

पैरामीटरप्रकारविवरण
$keyस्ट्रिंगपरिवर्तनीय नाम
$valueमिश्रितसेट करने के लिए मान
$notGpcबूलयदि सत्य है, तो मान GET/POST/COOKIE से नहीं है

रिटर्न: bool - सफल होने पर सही, अन्यथा गलत

उदाहरण:

$object = new MyObject();
$object->setVar('title', 'Hello World');
$object->setVar('content', '<p>Content here</p>', true); // Not from user input
$object->setVar('status', 1);

वैकल्पिक स्वरूपण के साथ एक चर का मान पुनर्प्राप्त करता है।

public function getVar(
string $key,
string $format = 's'
): mixed

पैरामीटर:

पैरामीटरप्रकारविवरण
$keyस्ट्रिंगपरिवर्तनीय नाम
$formatस्ट्रिंगआउटपुट स्वरूप

प्रारूप विकल्प:

प्रारूपविवरण
's'दिखाएँ - HTML इकाइयाँ प्रदर्शन के लिए बच गईं
'e'संपादित करें - प्रपत्र इनपुट मानों के लिए
'p'पूर्वावलोकन - शो के समान
'f'प्रपत्र डेटा - प्रपत्र प्रसंस्करण के लिए कच्चा
'n'कोई नहीं - कच्चा मान, कोई फ़ॉर्मेटिंग नहीं

रिटर्न: mixed - स्वरूपित मान

उदाहरण:

$object = new MyObject();
$object->setVar('title', 'Hello <World>');
echo $object->getVar('title', 's'); // "Hello &lt;World&gt;"
echo $object->getVar('title', 'e'); // "Hello &lt;World&gt;" (for input value)
echo $object->getVar('title', 'n'); // "Hello <World>" (raw)
// For array data types
$object->setVar('options', ['a', 'b', 'c']);
$options = $object->getVar('options', 'n'); // Returns array

किसी सरणी से एक साथ कई वेरिएबल सेट करता है।

public function setVars(
array $values,
bool $notGpc = false
): void

पैरामीटर:

पैरामीटरप्रकारविवरण
$valuesसारणीकुंजी की सहयोगी सरणी => मान जोड़े
$notGpcबूलयदि सत्य है, तो मान GET/POST/COOKIE से नहीं हैं

उदाहरण:

$object = new MyObject();
$object->setVars([
'title' => 'My Title',
'content' => 'My content',
'status' => 1
]);
// From database (not user input)
$object->setVars($row, true);

मूल्य प्राप्त करें

Section titled “मूल्य प्राप्त करें”

सभी परिवर्तनीय मान पुनर्प्राप्त करता है।

public function getValues(
array $keys = null,
string $format = 's',
int $maxDepth = 1
): array

पैरामीटर:| पैरामीटर | प्रकार | विवरण | |----|------|----| | $keys | सारणी | पुनर्प्राप्त करने के लिए विशिष्ट कुंजियाँ (सभी के लिए शून्य) | | $format | स्ट्रिंग | आउटपुट स्वरूप | | $maxDepth | int | नेस्टेड वस्तुओं के लिए अधिकतम गहराई |

रिटर्न: array - मानों की सहयोगी सारणी

उदाहरण:

$object = new MyObject();
// Get all values
$allValues = $object->getValues();
// Get specific values
$subset = $object->getValues(['title', 'status']);
// Get raw values for database
$rawValues = $object->getValues(null, 'n');

सत्यापन के बिना सीधे मान निर्दिष्ट करता है (सावधानीपूर्वक उपयोग करें)।

public function assignVar(
string $key,
mixed $value
): void

पैरामीटर:

पैरामीटरप्रकारविवरण
$keyस्ट्रिंगपरिवर्तनीय नाम
$valueमिश्रितअसाइन करने के लिए मान

उदाहरण:

// Direct assignment from trusted source (e.g., database)
$object->assignVar('id', $row['id']);
$object->assignVar('created', $row['created']);

डेटाबेस संचालन के लिए सभी वेरिएबल्स को स्वच्छ करता है।

public function cleanVars(): bool

रिटर्न: bool - यदि सभी चर मान्य हैं तो सत्य है

उदाहरण:

$object = new MyObject();
$object->setVar('title', 'Test');
$object->setVar('email', 'user@example.com');
if ($object->cleanVars()) {
// Variables are sanitized and ready for database
$cleanData = $object->cleanVars;
} else {
// Validation errors occurred
$errors = $object->getErrors();
}

जाँच या सेट करता है कि वस्तु नई है या नहीं।

public function isNew(): bool
public function setNew(): void
public function unsetNew(): void

उदाहरण:

$object = new MyObject();
echo $object->isNew(); // true
$object->unsetNew();
echo $object->isNew(); // false
$object->setNew();
echo $object->isNew(); // true

त्रुटि प्रबंधन के तरीके

Section titled “त्रुटि प्रबंधन के तरीके”

एक त्रुटि संदेश जोड़ता है.

public function setErrors(string|array $error): void

उदाहरण:

$object->setErrors('Title is required');
$object->setErrors(['Field 1 error', 'Field 2 error']);

त्रुटियाँ प्राप्त करें

Section titled “त्रुटियाँ प्राप्त करें”

सभी त्रुटि संदेशों को पुनः प्राप्त करता है।

public function getErrors(): array

उदाहरण:

$errors = $object->getErrors();
foreach ($errors as $error) {
echo $error . "\n";
}

HTML के रूप में स्वरूपित त्रुटियाँ लौटाता है।

public function getHtmlErrors(): string

उदाहरण:

if (!$object->cleanVars()) {
echo '<div class="error">' . $object->getHtmlErrors() . '</div>';
}

उपयोगिता विधियाँ

Section titled “उपयोगिता विधियाँ”

से सारणीबद्ध करना

Section titled “से सारणीबद्ध करना”

ऑब्जेक्ट को एक सरणी में परिवर्तित करता है।

public function toArray(): array

उदाहरण:

$object = new MyObject();
$object->setVar('title', 'Test');
$data = $object->toArray();
// ['title' => 'Test', ...]

परिवर्तनीय परिभाषाएँ लौटाता है।

public function getVars(): array

उदाहरण:

$vars = $object->getVars();
foreach ($vars as $key => $definition) {
echo "Field: $key, Type: {$definition['data_type']}\n";
}

पूर्ण उपयोग उदाहरण

Section titled “पूर्ण उपयोग उदाहरण”
<?php
/**
* Custom Article Object
*/
class Article extends XoopsObject
{
/**
* Constructor - Initialize all variables
*/
public function __construct()
{
parent::__construct();
// Primary key
$this->initVar('article_id', XOBJ_DTYPE_INT, null, false);
// Required fields
$this->initVar('title', XOBJ_DTYPE_TXTBOX, '', true, 255);
$this->initVar('author_id', XOBJ_DTYPE_INT, 0, true);
// Optional fields
$this->initVar('summary', XOBJ_DTYPE_TXTAREA, '', false);
$this->initVar('content', XOBJ_DTYPE_TXTAREA, '', false);
$this->initVar('category_id', XOBJ_DTYPE_INT, 0, false);
// Timestamps
$this->initVar('created', XOBJ_DTYPE_INT, time(), false);
$this->initVar('updated', XOBJ_DTYPE_INT, time(), false);
// Status flags
$this->initVar('published', XOBJ_DTYPE_INT, 0, false);
$this->initVar('views', XOBJ_DTYPE_INT, 0, false);
// Metadata as array
$this->initVar('meta', XOBJ_DTYPE_ARRAY, [], false);
}
/**
* Get formatted creation date
*/
public function getCreatedDate(string $format = 'Y-m-d H:i:s'): string
{
return date($format, $this->getVar('created', 'n'));
}
/**
* Check if article is published
*/
public function isPublished(): bool
{
return $this->getVar('published', 'n') == 1;
}
/**
* Increment view counter
*/
public function incrementViews(): void
{
$views = $this->getVar('views', 'n');
$this->setVar('views', $views + 1);
}
/**
* Custom validation
*/
public function validate(): bool
{
$this->errors = [];
// Title validation
$title = trim($this->getVar('title', 'n'));
if (empty($title)) {
$this->setErrors('Title is required');
} elseif (strlen($title) < 5) {
$this->setErrors('Title must be at least 5 characters');
}
// Author validation
if ($this->getVar('author_id', 'n') <= 0) {
$this->setErrors('Author is required');
}
return empty($this->errors);
}
}
// Usage
$article = new Article();
$article->setVar('title', 'My First Article');
$article->setVar('author_id', 1);
$article->setVar('content', '<p>Article content here...</p>', true);
$article->setVar('meta', [
'keywords' => ['xoops', 'cms', 'php'],
'description' => 'An example article'
]);
if ($article->validate() && $article->cleanVars()) {
// Save to database via handler
$handler = xoops_getModuleHandler('article', 'mymodule');
$handler->insert($article);
echo "Article saved with ID: " . $article->getVar('article_id');
} else {
echo "Errors: " . $article->getHtmlErrors();
}

सर्वोत्तम प्रथाएँ

Section titled “सर्वोत्तम प्रथाएँ”
  1. वेरिएबल्स को हमेशा इनिशियलाइज़ करें: initVar() का उपयोग करके कंस्ट्रक्टर में सभी वेरिएबल्स को परिभाषित करें

  2. उपयुक्त डेटा प्रकारों का उपयोग करें: सत्यापन के लिए सही XOBJ_DTYPE_* स्थिरांक चुनें

  3. उपयोगकर्ता इनपुट को सावधानी से संभालें: उपयोगकर्ता इनपुट के लिए $notGpc = false के साथ setVar() का उपयोग करें

  4. सहेजने से पहले सत्यापित करें: डेटाबेस संचालन से पहले हमेशा cleanVars() पर कॉल करें

  5. प्रारूप पैरामीटर का उपयोग करें: संदर्भ के लिए getVar() में उचित प्रारूप का उपयोग करें

  6. कस्टम लॉजिक के लिए विस्तार: उपवर्गों में डोमेन-विशिष्ट तरीके जोड़ें

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

Section titled “संबंधित दस्तावेज़ीकरण”
  • XoopsObjectHandler - ऑब्जेक्ट दृढ़ता के लिए हैंडलर पैटर्न
  • ../डेटाबेस/Criteria - Criteria के साथ क्वेरी बिल्डिंग
  • ../डेटाबेस/XoopsDatabase - डेटाबेस संचालन

यह भी देखें: XOOPS सोर्स कोड