abstract class AbstractUser {}
class Partner extends AdstractUser {
private UserType $type;
}
class Operator extends AbctractUser {}
class Client extends AbstractUser {}
class Administrator extends AbstractUser {}
enum UserType: string {
/**
* врач
*/
case DOCTOR = 'doctor';
/**
* Медсестра
*/
case NURSE = 'nurse';
/**
* Массажист
*/
case MASSEUR = 'masseur';
}
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);