Чат Telegram
Группа ВКонтакте
Новый комментарий


vadymbilyi@gmail.com 25.12.2018 в 15:52

ок

ivashkevich 26.12.2018 в 00:31

=)

Dram 12.05.2019 в 12:52

Да что-ж такое то! Третий урок без домашки. Преподу тройку за лень!

ivashkevich 12.05.2019 в 13:10

Будет ещё домашка. Пока просто запоминай :)

Tina 23.06.2019 в 20:17

Вы уверены что пути правильные? Все сделала как написано, но не работает. Путь до проекта на сервере имяПроекта/www

ivashkevich 24.06.2019 в 02:52

За 2 года только у вас ошибка возникла. Что не работает-то?

Tina 25.06.2019 в 01:04

500 ошибка. Работаю mamp pro +vphpstorm

ivashkevich 25.06.2019 в 04:42

Разбирайтесь сами с другими серверами. Я сразу сказал, что поддержка будет только для OpenServer. Скорее всего, в вашем случае папка www должна называться public_html или htdocs, или как ещё она в mamp по умолчанию называется.

bratislavka21 30.07.2019 в 19:13

Привет, Артем, возникла проблема:
в папке myproject.loc находятся 2 папки (www и src), т.е. если переходить по адресу http://myproject.loc, хоть с GET-запросом, хоть без, можно увидеть лишь 2 этих каталога, ведь index-файла там нет, он находится в папке www. Где я что-то упустил? Это важно, т.к. в следующем уроке возникают те же проблемы. (Windows, Open Server).

ivashkevich 30.07.2019 в 19:25

Привет. Нужно настроить OpenServer в соответствии с этим уроком - https://webshake.ru/php-training-course/3

bratislavka21 30.07.2019 в 21:59

Спасибо,теперь все работает. Проблема была в настройках OpenServer, в автопоиске доменов. Пользователь Tina в комментариях выше, возможно, тоже имела в виду что-то подобное, хоть у нее и не Openserver.

shrineofamana 24.09.2019 в 00:55

Скажите пожалуйста, а почему мы используем

if (!empty($_GET['name']))

вместо

if ($_GET['name'])

?

ivashkevich 24.09.2019 в 08:50

Потому что при обращении по несуществующему ключу напрямую будет возникать ошибка. Попробуй написать так, убрать поле из формы и отправить запрос.

shrineofamana 24.09.2019 в 12:45

Понял, спасибо.

ivashkevich 24.09.2019 в 19:43

Красава!

Lasto 03.10.2019 в 15:51

На рабочей машине(сервере) не работает use.

ivashkevich 03.10.2019 в 17:16

Что значит не работает?

Lasto 03.10.2019 в 18:30

после добавления данной строки
use MyProject\Models\Users\User;
http://autohit.pro/ страница не доступна, перекопировал все коды, все страниц, не пашит.

ivashkevich 04.10.2019 в 12:58

Давай текст ошибки

andreskrip 16.01.2020 в 20:08

Спасибо за урок!

А разве не нужно у функций, которые ничего не возвращают (main(), sayHello()) ставить тип возвращаемого значения void? Уроками ранее на этом в комментариях делался сильный акцент.

ivashkevich 18.01.2020 в 07:29

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

New 18.02.2020 в 21:05

Можно было в index.php прописать

namespace MyProject\Controllers;

, чтобы писать при создании нового объекта

$controller = new MainController();

вместо

$controller = new \MyProject\Controllers\MainController(); 
ivashkevich 19.02.2020 в 04:52

И с чего это index.php будет в этом нэймспейсе? Он вообще по другому пути валяется.

New 19.02.2020 в 11:00

Да, написал не то, что хотел. Имелось в виду вот это:

use MyProject\Controllers\MainController;

а не namespace в начале класса, чтобы потом не писать длинное имя.

ivashkevich 19.02.2020 в 19:19

И всё же, он вообще в папке www лежит, а не в src\MyProject\Controllers\MainController

New 19.02.2020 в 22:27

Так что, нельзя таким образом использовать инструкцию use, чтобы задать короткое имя для использованного в index.php класса? Хотя тут класс контроллера использован всего один раз в коде, может в этом и нет особого смысла, интересна сама возможность этого в принципе. Ну и код работает, никаких ошибок, предупреждений я ни в шторме, ни в браузере при запуске не видел. Все корректно работает.

ivashkevich 20.02.2020 в 04:28

Что работает понятно, просто есть стандарты, которые говорят о том, что путь неймспейса должен соответствовать файловой структуре проекта.

New 20.02.2020 в 10:11

путь неймспейса должен соответствовать файловой структуре проекта

Так я же неймспейс вообще не пишу в индексе, а ссылаюсь на путь к классу контроллера с помощью use. Я же не пишу в индексе неймспейс для индекса.
Вот index.php:

<?php
use MyProject\Controllers\MainController;
spl_autoload_register(function (string $className) {
    require_once __DIR__ . '/../src/' . $className . '.php';
});

$controller = new MainController();
if (!empty($_GET['name'])) {
    $controller->sayHello($_GET['name']);
} else {
    $controller->main();
}

Я не пойму, чем это отличается от вот этой ситуации:

Либо же указать в начале файла о каком классе идёт речь, когда мы используем в коде только слово User. Делается это с помощью слова use после указания текущего неймспейса, но перед описанием класса.

<?php

namespace MyProject\Models\Articles;

use MyProject\Models\Users\User;

class Article
{
    private $title;
    private $text;
    private $author;

    public function __construct(string $title, string $text, User $author)
    {
        $this->title = $title;
        $this->text = $text;
        $this->author = $author;
    }

    public function getTitle(): string
    {
        return $this->title;
    }

    public function getText(): string
    {
        return $this->text;
    }

    public function getAuthor(): User
    {
        return $this->author;
    }
}
Теперь, когда мы будем использовать класс User, то автоматически будет использоваться класс из неймспейса MyProject\Models\Users\User.

Тут тоже используется use, чтобы не писать длинный путь к другому классу, который используется в данном. Use и namespace же не связаны тут. Namespace указывает на порстранство имен текущего класса, а use указывает на пространство имен другого использованного класса в текущем. Или я не прав?

ivashkevich 20.02.2020 в 12:31

Аа, сорян, я вас не понял) да, так конечно можно)

Логические задачи с собеседований