Utility Yardımcıları
Kod tabanının dayandığı küçük statik fonksiyonlar. Birçoğu, yerine geçtiği PHP yerleşiği burada yanlış cevap verdiği için vardır.
Genel Bakış
Çoğu, burada yanlış davranan bir PHP yerleşiğini sarmalar. Ham fonksiyon yapılandırılmış kodlamayı yok sayar, Türkçede bozulur ya da sistemin geri okuyamayacağı JSON üretir.
Aşağıdaki her şey statiktir ve başarısızlık yanlış değerli bir dönüştür. Gerekçesini yalnız istek yardımcısı söyler: Utility::$error içinde.
Referans
Uzak Servis Çağırma
public static function HttpRequest($url = '', $params = [], $retry = 0);
// Tercih edilen: seçenek dizisi İLK argüman olarak.
$body = Utility::HttpRequest([
'url' => 'https://api.example.com/v1/ping',
'type' => 'POST',
'data' => ['a' => 1],
'header' => ['Accept: application/json'],
]);
// Eski biçim: önce adres, sonra daha küçük bir seçenek dizisi.
$body = Utility::HttpRequest('https://api.example.com/v1/ping', ['post' => ['a' => 1]]);
Yanıt gövdesini dize olarak döndürür; aktarım başarısız olduğunda false. Üçüncü argüman iç yönlendirme sayacıdır, çağıran taraf onu geçmez. Seçenekler:
| Anahtar | Tip | Varsayılan | Ne yapar |
|---|---|---|---|
url | string | zorunlu | Hedef adres. Sorgu dizesi buraya yazılır, data içine değil. |
type | string | GET | HTTP metodu, büyük harfe çevrilir. GET dışı her şey özel istek olarak gider. |
data | dizi ya da dize | yok | İstek gövdesi. Dizi form olarak kodlanır, dize olduğu gibi gider; JSON böyle gönderilir. Metot GET iken yok sayılır. |
header | dizi | boş | Tam başlık satırları; örneğin 'Authorization: Bearer ...'. |
timeout | int | 30 | Aktarımın tamamına tanınan saniye. |
connect_timeout | int | 10 | Yalnız bağlantı aşamasına tanınan saniye. |
ssl_verify | bool | true | Karşı tarafı ve host adını doğrular. Kendi denetiminizdeki bir servis dışında kapatmayın. |
allow_ipv6 | bool | false | False iken ad çözümü v4'e zorlanır; v6 yönlendirmesi olmayan bir host sistem zaman aşımına kadar bloke olur. |
post, timeout (varsayılan 5), connect_timeout, ssl_verify (varsayılan false) ve allow_ipv6. Başlık göndermez ve post verilir verilmez POST seçer.
false dönüşünden sonra taşıma mesajını tutar, örneğin ad çözümü hatası. Oraya yazan tek yer bu metottur, yani bayat bir değer diğer her başarısızlıktan sağ çıkar. Sonraki çağrı üzerine yazmadan önce okuyun.
JSON
public static function jencode($string = '', $flags = 0): string|false;
public static function jdecode($string = '', $mode = false);
$flags, her zaman açık olan üçüne eklenir: geçersiz bayt dizileri düşer, unicode kaçırılmaz, eğik çizgiler kaçırılmaz. Kodlanamayan bir değere false yanıtlar.
null yanıtlar.
Metin
public static function strtoupper($str, $encode = 'utf8');
public static function strtolower($str, $encode = 'UTF-8');
public static function ucfirst($string, $encoding = 'utf8');
public static function strlen($str, $charset = 'utf-8');
public static function substr($str = '', $start = 0, $end = -1, $charset = 'utf-8');
public static function short_text($text = '', $start = false, $end = false, $points = false, $charset = 'UTF-8');
null geçin.
Adresler
public static function AppAdress($prefix = false);
public static function RequestURI();
public static function redirect($url = '', $time = 0): void;
public static function getReferer($internal_only = false);
public static function seo_url(string $url, array $allowed = ['page']): string;
public static function image_link_determiner($arg = '', $prefix = '', $rseparator = true);
null. Bu kurulum dışından geleni reddetmek için true geçin.
Ziyaretçinin Adresi
public static function resolve_client_ip(array $headers = []): string;
public static function trusted_proxies(): array;
public static function forwarded_header_ignored(): bool;
public static function ip_in_ranges(string $ip, array $ranges): bool;
public static function cidr_match(string $ip, string $cidr): bool;
Veri ve Dosyalar
public static function array_export($array = [], $options = []);
public static function xdecode($xml_string = '', $returnArray = false);
public static function array_to_xml(array $data, string $root = 'data'): string;
public static function generate_hash($length = 9, $add_dashes = false, $available_sets = 'luds');
public static function sizeFormat(int $bytes, string $emptyPlaceholder = "\u2014"): string;
pwith: true çıktıyı diziyi döndüren tam bir dosyaya sarar; yapılandırma böyle kaydedilir. Sonuç önce çalıştırılıp sınanır, dizi olarak geri gelmezse daha katı bir dışa aktarım devreye girer.
false yanıtlar. Kök eleman tek dış anahtar olur.
l küçük harf, u büyük harf, d rakam, s simge; birbirine benzeyen karakterler dışarıda kalır. İkinci argüman sonucu tirelerle gruplar ve uzatır.
Örnek
Çağrı ve geri okuma bir arada.
public function create_account(string $domain, string $plan): array
{
$body = Utility::jencode(['domain' => $domain, 'plan' => $plan]);
$response = Utility::HttpRequest([
'url' => 'https://api.example.com/v1/accounts',
'type' => 'POST',
'data' => $body, // dize olduğu gibi gönderilir
'header' => [
'Authorization: Bearer ' . $this->config['token'],
'Content-Type: application/json',
],
'timeout' => 20,
]);
// Taşıma hatası: hiçbir şey ayrıştırılmadı, sebep sınıfın üzerinde duruyor.
if ($response === false)
throw new Exception('Sağlayıcıya ulaşılamadı: ' . Utility::$error);
$result = Utility::jdecode((string) $response, true);
// Protokol hatası: bir yanıt aldık, ama ihtiyacımız olan yanıt değil.
if (!is_array($result) || !isset($result['id']))
throw new Exception('Sağlayıcıdan beklenmeyen yanıt.');
return [
'id' => $result['id'],
'quota' => Utility::sizeFormat((int) ($result['quota_bytes'] ?? 0)),
];
}
Tuzaklar
Eski biçim sertifika doğrulamasını kapatır ve aktarım zaman aşımını otuz saniyeden beşe indirir. Alışkanlıkla adresi ilk argüman olarak yazmak, doğrulamayı sessizce kapatır. Seçenek dizisini kullanın.
Gövdede bir konum satırı göründüğünde çağrı kendini o adres ve eski biçim varsayılanlarıyla yeniden gönderir. Metot, gövde ve başlıklar taşınmaz; kimlikli bir POST anonim bir GET olarak geri gelir. Böyle bir yanıtı kendiniz izleyin.
Türkçe harf eşlemesi yalnız seçili dil Türkçeyken uygulanır, yani aynı girdi iki oturumda farklı büyür. Saklanan bir anahtarı, karşılaştırma anahtarını ya da dosya adını asla böyle kurmayın. Bunu insanın okuyacağı yerde kullanın.
İçinde metin olan bir eleman özniteliklerini tümüyle düşürür, tekrar eden kardeşler tek anahtarda toplanır. Tek öğeli yanıt bir dize, iki öğelisi bir listedir. Cevabı bunlardan birine dayanan bir sağlayıcıyı kendiniz ayrıştırın.
İlgili Makaleler
Geri bildiriminiz için teşekkürler!
Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.