Skip to content

Commit bdd7602

Browse files
authored
Merge pull request #26 from mambax7/master
extra languages
2 parents f41a6e4 + 62aaaa5 commit bdd7602

3,192 files changed

Lines changed: 1147096 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

apps/docs-27/src/content/docs/cs/api-reference/core/xoops-object-handler.md

Lines changed: 778 additions & 0 deletions
Large diffs are not rendered by default.

apps/docs-27/src/content/docs/cs/api-reference/core/xoops-object.md

Lines changed: 573 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
---
2+
title: "Třídy Criteria a CriteriaCompo"
3+
description: "Vytváření dotazů a pokročilé filtrování pomocí tříd Criteria"
4+
---
5+
6+
Třídy `Criteria` a `CriteriaCompo` poskytují plynulé, objektově orientované rozhraní pro vytváření složitých databázových dotazů. Tyto třídy abstrahují klauzule SQL WHERE, což vývojářům umožňuje vytvářet dynamické dotazy bezpečně a čitelně.
7+
8+
## Přehled třídy
9+
10+
### Třída kritérií
11+
12+
Třída `Criteria` představuje jednu podmínku v klauzuli WHERE:
13+
14+
```php
15+
namespace XOOPS\Database;
16+
17+
class Criteria
18+
{
19+
protected $column;
20+
protected $operator;
21+
protected $value;
22+
protected $function;
23+
24+
public function __construct(
25+
string $column,
26+
mixed $value = null,
27+
string $operator = '=',
28+
string $function = ''
29+
) {}
30+
31+
public function render(string $prefix = ''): string {}
32+
}
33+
```
34+
35+
## Základní použití
36+
37+
### Jednoduchá kritéria
38+
39+
```php
40+
use XOOPS\Database\Criteria;
41+
use XOOPS\Database\CriteriaCompo;
42+
43+
// Single condition
44+
$criteria = new Criteria('status', 'active');
45+
// Renders: `status` = 'active'
46+
```
47+
48+
### Různí operátoři
49+
50+
```php
51+
// Equality (default)
52+
$criteria = new Criteria('status', 'active', '=');
53+
54+
// Not equal
55+
$criteria = new Criteria('status', 'active', '<>');
56+
57+
// Greater than
58+
$criteria = new Criteria('age', 18, '>');
59+
60+
// Less than or equal
61+
$criteria = new Criteria('age', 65, '<=');
62+
63+
// LIKE (for pattern matching)
64+
$criteria = new Criteria('email', '%@example.com', 'LIKE');
65+
66+
// IN (for multiple values)
67+
$criteria = new Criteria('status', ['active', 'pending', 'review'], 'IN');
68+
```
69+
70+
## Vytváření složitých dotazů
71+
72+
### Logika AND (výchozí)
73+
74+
```php
75+
$criteria = new CriteriaCompo();
76+
$criteria->add(new Criteria('status', 'active'));
77+
$criteria->add(new Criteria('age', 18, '>='));
78+
$criteria->add(new Criteria('verified', 1));
79+
// Renders: `status` = 'active' AND `age` >= 18 AND `verified` = 1
80+
```
81+
82+
### NEBO Logika
83+
84+
```php
85+
$criteria = new CriteriaCompo('OR');
86+
$criteria->add(new Criteria('role', 'admin'));
87+
$criteria->add(new Criteria('role', 'moderator'));
88+
$criteria->add(new Criteria('role', 'editor'));
89+
```
90+
91+
## Integrace se vzorem úložiště
92+
93+
### Příklad úložiště
94+
95+
```php
96+
namespace MyModule\Repository;
97+
98+
use XOOPS\Database\XOOPSDatabase;
99+
use XOOPS\Database\Criteria;
100+
use XOOPS\Database\CriteriaCompo;
101+
102+
class UserRepository
103+
{
104+
private $db;
105+
private $table = 'users';
106+
107+
public function __construct(XOOPSDatabase $db)
108+
{
109+
$this->db = $db;
110+
}
111+
112+
public function findByCriteria(CriteriaCompo $criteria): array
113+
{
114+
$sql = "SELECT * FROM {$this->table}";
115+
116+
if ($criteria->count() > 0) {
117+
$sql .= " WHERE " . $criteria->render();
118+
}
119+
120+
$result = $this->db->query($sql);
121+
$users = [];
122+
123+
while ($row = $this->db->fetchArray($result)) {
124+
$users[] = new User($row);
125+
}
126+
127+
return $users;
128+
}
129+
}
130+
```
131+
132+
## Bezpečnost a zabezpečení
133+
134+
### Automatické escapování
135+
136+
Třída `Criteria` automaticky unikne hodnotám, aby se zabránilo vstřikování SQL:
137+
138+
```php
139+
// Safe - value is automatically escaped
140+
$userInput = "'; DROP TABLE users; --";
141+
$criteria = new Criteria('username', $userInput);
142+
// Safely renders: `username` = '\''; DROP TABLE users; --'
143+
```
144+
145+
## Reference API
146+
147+
### Metody kritérií
148+
149+
| Metoda | Popis | Návrat |
150+
|--------|-------------|--------|
151+
| `__construct()` | Inicializovat podmínku kritéria | neplatný |
152+
| `render($prefix = '')` | Vykreslit do segmentu klauzule SQL WHERE | řetězec |
153+
| `getColumn()` | Získejte název sloupce | řetězec |
154+
| `getValue()` | Získejte srovnávací hodnotu | smíšené |
155+
| `getOperator()` | Získejte operátor porovnání | řetězec |
156+
157+
### Metody CriteriaCompo
158+
159+
| Metoda | Popis | Návrat |
160+
|--------|-------------|--------|
161+
| `__construct($logic = 'AND')` | Inicializovat složená kritéria | neplatný |
162+
| `add($criteria, $logic = null)` | Přidat kritéria nebo vnořený kompozit | neplatný |
163+
| `render($prefix = '')` | Vykreslením dokončete klauzuli WHERE | řetězec |
164+
| `count()` | Získat počet kritérií | int |
165+
| `clear()` | Odebrat všechna kritéria | neplatný |
166+
167+
## Související dokumentace
168+
169+
- XOOPSDatabase - Odkaz na třídu databáze
170+
- ../../03-Module-Development/Patterns/Repository-Pattern - Vzor úložiště v XOOPS
171+
- ../../03-Module-Development/Patterns/Service-Layer-Pattern - Vzor servisní vrstvy
172+
173+
## Informace o verzi
174+
175+
- **Představeno:** XOOPS 2.5.0
176+
- **Poslední aktualizace:** XOOPS 4.0
177+
- **Kompatibilita:** PHP 7.4+

0 commit comments

Comments
 (0)