Coder Social home page Coder Social logo

loftschool-homework's People

Watchers

 avatar  avatar

loftschool-homework's Issues

Порядок условий

Код рабочий:

if (($age <= 65) && ($age >= 18)) {
echo("Вам еще работать и работать");
} elseif ($age > 65) {
echo("Вам пора на пенсию");
} elseif (($age<18) && ($age>0)) {
echo("Вам еще рано работать");
} else {
echo("Неизвестный возраст");
}

Предлагаю поменять порядок условий

if ($age > 0 && $age < 18) {
...
} elseif ($age >= 18 && $age <= 65) { 
...
} elseif ($age > 65) {

Это улучшит читаемость кода, и будет проще например добавить
ещё одну проверку.

Применить стандартные функции

function countNames(array $array)
{
foreach ($array as $key ) {
do {
if ($key['name'] === 'Sasha') {
$countSasha++;
} elseif ($key['name'] === 'Geor') {
$countGeor++;
} elseif ($key['name'] === 'Sos') {
$countSos++;
} elseif ($key['name'] === 'Vlad') {
$countVlad++;
} elseif ($key['name'] === 'Diana') {
$countDiana++;
}
} while(!$array);
}
return $array = [
'Sasha'=>$countSasha,
'Geor'=>$countGeor,
'Sos'=>$countSos,
'Vlad'=>$countVlad,
'Diana'=>$countDiana
];
}

Для подсчёта количества пользователей удобно воспользоваться функцией
https://www.php.net/manual/ru/function.array-fill-keys.php
Ты инициализируешь массив с нулевыми значениями для каждого юзера,
а затем в цикле для каждого юзера увеличишь счетчик.

Вынести в отдельный класс (FileLoader)

Логику работы с файлами нельзя мешать с логикой работы с БД.

Все сохранение файлов нужно делать отдельным классом.

public function loadFile($file)
{
if(file_exists($file)){
$this->image = $this->genImageName();
move_uploaded_file( $file , getcwd() . DIRECTORY_SEPARATOR . "images" . DIRECTORY_SEPARATOR . $this->image);
}
}

Вынести инициализацию twig в базовый класс

Чтобы избежать дублирования вынеси создание шаблонизатора в коструктор

$loader = new FilesystemLoader(PROJECT_ROOT_DIR . DIRECTORY_SEPARATOR . 'app' . DIRECTORY_SEPARATOR . 'View' . DIRECTORY_SEPARATOR . 'BlogLinks');
$twig = new Environment($loader, ['debug' => true]);

(так же как было с phtml)

Улучшение логики

$users = [];
for ($i = 1; $i <= 50; $i++) { //создем массив
$users += ["User{$i}" => [ //заполняем массив
'id' => $i,
'name' => generateName(),
'age' => rand(18, 45)
],
];
}

  1. Список пользователей лучше вынести в отдельный фаил, например user_names.php
    Его содержание
return [
    'Sasha',
    'Geor',
    'Sos',
    'Vlad',
    'Diana',
];

В основном сценарии подключить этот фаил
$user_names = requre('user_names.php');

Т.к. в файле есть return, то при подключении его содержание можно сохранить в отдельную переменную.

  1. Написать функцию generateRandomUsers() с двумя параметрами
$count - количество пользователей
$userNames - имена пользоателей

Вызвать ее в основном сценарии.
$users = generateRandomUsers(50, $user_names);

Вложенные циклы

  1. Создание массива
    $bmw = [];
    $bmw['model'] = 'X5';
    $bmw['speed'] = '120';
    $bmw['doors'] = '5';
    $bmw['year'] = '2015';

    Ты сначала инициализируешь пустой массив, потом записываешь в него значения. В целом подход правильный,
    но в данном случае количество элементов в массиве тебе известно, поэтому ты можешь сразу задать все элементы при создании
$bmw = [
    'model' =>  'X5',
    'speed' => 120,
    .....
];

Так же и с массивом $opel.

  1. Создание общего массива:
    Ты пытаешься записать каждый элемент в общий массив.
    Проще будет записать сразу все значения целиком:
$machines = ['bmw' => $bmw, ...];
  1. Вывод значений:
    Текущий вывод неоптимален, так как ты каждую машину выводишь в своем цикле. Если машин будет 1000, тебе придется писать 1000 циклов.

Для решения этой задачи ты можешь воспользоваться вложенными циклами, т.е.
сначала обойти все машины, а потом для каждой машины обойти все свойства.

foreach($machines as $machineName => $machineData) {
    foreach($machineData as $propertyName => $propertyValue) {
    ....
    }
}

Рекомендую посмотреть описание функции тут:
https://www.php.net/manual/ru/control-structures.foreach.php

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.