Как то можно заранее выявить такую компанию с таким же отношением и организацией, чтоб не попасть на те же грабли?Выбор правильного места работы или как работая программистом не умереть от инфаркта - я попытался для таких бедолаг, как ты, я и других написать некий мануал. Прочтите его "от и до". Там мой опыт за многие годы.
Как восстановиться, что бы профессия на которой оно случилось не вызывала негатива?выход только один - искать хорошее место работы, указанное в статье выше. Других вариантов просто нет. В моей жизни было два или три прецедента, когда работа (в комплексе со всеми факторами) меня просто убивала. Последний раз это случилось в 2016. Я уволился не имея за душой и гроша, с кредитом на руках. Устроился курьером на своей машине подрабатывать, за копейки. И тогда я понял одну важную вещь - работа в IT - чертовски сложна. Я, зарабатывая на хлеб и бензин, в буквальном смысле слова отдыхал за рулем, развозя грузы. Конечно, сейчас я сижу в очень хорошем месте, где я востребован как специалист, без всяких негативов. Но суть осталась - если работа не нравится, её необходимо менять. Особенно работа в IT, которая сама по себе довольно сложна (в отличие от мнения обывателей).
/**
* Проверяет, является ли значение целым числом.
*
* @param mixed $input
* @return boolean
*/
function isInteger($val)
{
if (!is_scalar($val) || is_bool($val)) {
return false;
}
return isFloat($val) ? false : preg_match('~^((?:\+|-)?[0-9]+)$~', $val) === 1;
}
/**
* Проверяет, является ли значение числом с плавающей точкой.
*
* @param mixed $input
* @return boolean
*/
function isFloat($val)
{
if (!is_scalar($val) || is_bool($val)) {
return false;
}
$type = gettype($val);
if ($type === "double") {
return true;
} else {
return preg_match("/^([+-]*\\d+)*\\.(\\d+)*$/", $val) === 1;
}
}
foreach ([
'11111111111111111', 11111111111111111, // > PHP_INT_MAX - presents in PHP as float
1, '10', '+1', '1.1', 1.1, .2, 2., '.2', '2.',
'-2.', '-.2', null, [], true, false, 'string'
] as $value) {
echo $value . ':' . gettype($value) . ' is Integer? - ' . (isInteger($value) ? 'yes' : 'no') . PHP_EOL;
echo $value . ':' . gettype($value) . ' is Float? - ' . (isFloat($value) ? 'yes' : 'no') . PHP_EOL;
}
11111111111111111:string is Integer? - yes
11111111111111111:string is Float? - no
11111111111111111:integer is Integer? - yes
11111111111111111:integer is Float? - no
1:integer is Integer? - yes
1:integer is Float? - no
10:string is Integer? - yes
10:string is Float? - no
+1:string is Integer? - yes
+1:string is Float? - no
1.1:string is Integer? - no
1.1:string is Float? - yes
1,1:double is Integer? - no
1,1:double is Float? - yes
0,2:double is Integer? - no
0,2:double is Float? - yes
2:double is Integer? - no
2:double is Float? - yes
.2:string is Integer? - no
.2:string is Float? - yes
2.:string is Integer? - no
2.:string is Float? - yes
-2.:string is Integer? - no
-2.:string is Float? - yes
-.2:string is Integer? - no
-.2:string is Float? - no // тут проблема
:NULL is Integer? - no
:NULL is Float? - no
Array:array is Integer? - no
Array:array is Float? - no
1:boolean is Integer? - no
1:boolean is Float? - no
:boolean is Integer? - no
:boolean is Float? - no
string:string is Integer? - no
string:string is Float? - no
Потому что я не могу разобраться что значит толстый "Уродливый" Контроллер"Уродливый" Контроллер - это когда в нем присутствует логика, которая должна быть в моделях или в сопутствующих классах. Например, бизнес-логика или иные вычисления.
Подгружаются ли классы HasOne, Category
Разрешение имен класса с использованием ::class происходит на этапе компиляции. Это означает, что на момент создания строки с именем класса автозагрузки класса не происходит. Как следствие, имена классов раскрываются, даже если класс не существует. Ошибка в этом случае не выдается.
целесообразно с точки зрения производительностик производительности этот вопрос не имеет значения. не надо заморачиваться над тем, что не имеет реального смысла. весь твой вопрос к практической пользе никакого отношения не имеет.
<?php
class DirectoryGenerator
{
/**
* Имя файла.
*
* @var string
*/
private $file_name;
/**
* Глубина создаваемой вложенности директорий.
* @var int
*/
private $depth = 3;
/**
* DirectoryGenerator constructor.
*
* @param string $file_name имя файла
*/
public function __construct(string $file_name)
{
if (!strlen($file_name)) {
throw new \InvalidArgumentException(__METHOD__ . ': Указан параметр нулевой длинны');
}
$this->file_name = $file_name;
}
/**
* Создает директории (если они ещё не созданы) на основе имени файла
* (например, d2d8f9c20083bd8483ac5d5526f923b9.jpeg) и возвращает путь.
*
* @param string $destinationDir директория назначния
* @return string путь, например: i\700x600\d\2\d\
*/
public function create(string $destinationDir): string
{
$destinationDir = rtrim($destinationDir, '\/');
for ($i = 0; $i < $this->depth; $i++) {
$destinationDir .= DIRECTORY_SEPARATOR . $this->file_name[$i];
if (!is_dir($destinationDir)) {
if (!mkdir($destinationDir, 0775)) {
throw new \RuntimeException(__METHOD__ . ': Не удалось создать директорию ' . $destinationDir);
}
}
}
return $destinationDir . DIRECTORY_SEPARATOR;
}
/**
* На основе имени файла (например, d2d8f9c20083bd8483ac5d5526f923b9.jpeg)
* возвращает путь к файлу для HTTP, вида /d/2/d/8/f/.
*
* @todo переименовать, название не отражает сути
* @return string HTTP-путь к файлу
*/
public function getHttpPath(): string
{
$destinationDir = '';
for ($i = 0; $i < $this->depth; $i++) {
$destinationDir .= '/' . $this->file_name[$i];
}
return $destinationDir . '/';
}
}