Pdo\Sqlite::createFunction

(PHP 8 >= 8.4.0)

Pdo\Sqlite::createFunction β€” РСгистрируСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для Π²Ρ‹Π·ΠΎΠ²Π° Π² SQL-инструкциях

ОписаниС

public function Pdo\Sqlite::createFunction(
Β Β Β Β string $function_name,
Β Β Β Β callable $callback,
Β Β Β Β int $num_args = -1,
Β Β Β Β int $flags = 0
): bool

ΠœΠ΅Ρ‚ΠΎΠ΄ рСгистрируСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ PHP-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² SQLite для Π²Ρ‹Π·ΠΎΠ²Π° Π² SQL-инструкциях. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Π² Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Π°Ρ… ΠΈΠ»ΠΈ SQL-запросах Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ SELECT, UPDATE ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… прСдлоТСниях с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Подсказка

ΠŸΡ€ΠΈ совпадСнии Π½Π°Π·Π²Π°Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ SQL-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Бписок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

function_name
НазваниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ указываСтся Π² SQL-инструкции.
callback
Callback-функция для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ SQL-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: SQLite ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ значСния скалярных Ρ‚ΠΈΠΏΠΎΠ², поэтому Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΈΠ· callback-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Π°Ρ сигнатура Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°:

function callback(mixed $value, mixed ...$values): mixed
value

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ SQL-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

values

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ SQL-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

num_args
ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ SQL-функция. ΠŸΡ€ΠΈ установкС значСния -1 SQL-функция ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².
flags
Битовая маска Ρ„Π»Π°Π³ΠΎΠ². ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„Π»Π°Π³ Pdo\Sqlite::DETERMINISTIC, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΡ€ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠΉ SQL-инструкции.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния

Ѐункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true, Ссли Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»Π°ΡΡŒ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, ΠΈΠ»ΠΈ false, Ссли Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ошибка.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #1 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ рСгистрации ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ SQL-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Pdo\Sqlite::createFunction()

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ функция вычисляСт дайдТСст строки ΠΏΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ SHA256, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ…Π΅Ρˆ. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ SQL-инструкции Π‘Π” Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ°Ρ функция ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π»Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°. Π”Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $rows, содСрТат Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° состоит Π² автоматичСской ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ запроса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ вмСсто постобработки Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π² Ρ†ΠΈΠΊΠ»Π΅ foreach.

<?php

function sha256_and_reverse($string)
{
return
strrev(hash('sha256', $string));
}

$db = new Pdo\Sqlite('sqlite::sqlitedb');
$db->createFunction('sha256rev', 'sha256_and_reverse', 1);
$rows = $db->query('SELECT sha256rev(filename) FROM files')->fetchAll();

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

  • Pdo\Sqlite::createAggregate() - РСгистрируСт Π°Π³Ρ€Π΅Π³ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для использования Π² SQL-выраТСниях
  • Pdo\Sqlite::createCollation() - РСгистрируСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для использования Π² качСствС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сопоставлСния Π² SQL-выраТСниях
  • sqlite_create_function()
  • sqlite_create_aggregate()
οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ добавляли примСчания для страницы