interface StorageInterface
{
/**
* Сохранить файл. Возвращает строкой относительный путь до файла
*
* @param string $directory - директория
* @param string $content - контент файла в бинарном представлении
* @param string $fileName - название файла для сохранения
*
* @return bool
*
* @throws Exception
*/
public function save(string $directory, string $content, string $fileName): bool;
/**
* Метод проверки наличия файла по относительному пути
*
* @param string $filePath
*
* @return bool
*/
public function isFile(string $filePath): bool;
/**
* Получить файл в виде ДТО
*
* @param string $directory
* @param string $realFileName
* @param string | null $fileName - пользовательское имя файла
*
* @return GetFileDTO
*
* @throws FileNotFoundException
*/
public function getFile(
string $directory,
string $realFileName,
?string $fileName = null
): GetFileDTO;
/**
* Удалить файл по пути
*
* @param string $directory
* @param string $fileName
*
* @return bool
*/
public function deleteFile(string $directory, string $fileName): bool;
}
public function methodFile(StorageInterface $storage): mixed
{
$storage->save();
$storage->deleteFile();
$storage->getFile();
$storage->isFile();
}
$body = [
'multipart' => [
[
'name' => 'chat_id',
'contents' => $chatId,
],
[
'name' => 'document',
'contents' => Utils::streamFor($content, ['metadata' =>['uri'=>'filename.txt']]),
],
],
];
$catalog_data = array_map(
function (array $array): array {
return [
'name' => $array['name'],
'url' => $array['url'],
];
},
$result["array"],
);
if (!in_array($docinfo['name'], $catalog_data)) {
$catalog_data[]= $docinfo['name'];
}
<ul class="list-inside bullet-list-item flex flex-wrap justify-between -mx-5 -my-2">
<?php
if ($isAuthorized) { //тут условие проверки авторизации
foreach ($menu as $value) {
?>
<li class="px-5 py-2">
<a class="<?= selectedMenu($value['path']) ? 'text-orange cursor-default' : 'text-gray-600 hover:text-orange' ?>"
href="<?= $value['path'] ?>"><?= cutString($value['title']) ?></a></li>
<?php }
}
?>
</ul>
$client->get('http://some.site.com', [
'query' => ['get' => 'params'],
'on_stats' => function (TransferStats $stats) use (&$url) {
$url = $stats->getEffectiveUri();
}
])->getBody()->getContents();
echo $url; // http://some.site.com?get=params
var_dump($response->getHeader(\GuzzleHttp\RedirectMiddleware::HISTORY_HEADER));
function getElement(array $array, int $counter): array
{
$i = 1;
foreach ($array as $key => $value) {
if ($i === $counter) {
return [$key => $value];
}
$i++;
}
}
$a = ["Alex" => "23", "Oleg" => "20", "Roman" => "22", "Sasha" => "19", "Dima" => "32", "Artur" => "25"];
var_dump(getElement($a, 4));
$elementQuantity = 7;
$searchString = 'busfor';
$fileName = 'filename'; //путь до файла
$filteredArray = array_filter( //возвращает массив, содержащий только строки с вхождением подстроки
file($fileName), //читаем файл в массив построчно,
fn (string $str): bool => str_contains($str, $searchString ),//фильтруем массив, оставляя только строки с искомым словом
);
shuffle($filteredArray); //перемешаем массив
$result = array_slice($filteredArray, 0, $elementQuantity);
public function exec_script($url, $params = array()){
$parts = parse_url($url);
if (!$fp = fsockopen($parts['host'], isset($parts['port']) ? $parts['port'] : 80))
{
return false;
}
$data = http_build_query($params, '', '&');
fwrite($fp, "POST " . (!empty($parts['path']) ? $parts['path'] : '/') . " HTTP/1.1\r\n");
fwrite($fp, "Host: " . $parts['host'] . "\r\n");
fwrite($fp, "Content-Type: application/x-www-form-urlencoded\r\n");
fwrite($fp, "Content-Length: " . strlen($data) . "\r\n");
fwrite($fp, "Connection: Close\r\n\r\n");
fwrite($fp, $data);
fclose($fp);
return true;
}
//теперь нам надо чекнуть ссылку на наличие в базе
$b=$this->checkBase($hash);
//если в базе такой страницы не существует
if($b==false){
$this->exec_script($addcache_url, array('hash'=>$hash, 'href'=>$href, 'parent'=>$content["id"]));
}
<input type="text" name="phone" value="<?=(!empty($session_data['phone']))?$session_data['phone']:'';?>" placeholder="Ваш номер телефона"/>