Зефир выдает ошибку «Неизвестный тип: новый» во время сборки - PullRequest
0 голосов
/ 14 марта 2020

Я пытаюсь Zephir создать расширение PHP.

Я создал проект (с именем "Cherry") со следующей структурой:

cherry/
|__ config.json
|__ cherry/
|   |__ Api.zep
|   |__ routing/
|       |__ Request.zep
|       |__ Response.zep
|       |__ Route.zep
|       |__ Router.zep
|__ ext/

В файле Api.zep У меня есть метод запуска:

namespace Cherry;

// ...

public function run() {
    var route = explode("?", _SERVER["REQUEST_URI"])[0];
    var method = _SERVER["REQUEST_METHOD"];
    var request = new Routing\Request(method, route);
    var response = this->router->dispatch(request);
}

Он создает запрос и отправляет его маршрутизатору для поиска подходящего маршрута и метода.

Класс запроса чрезвычайно базовый c:

namespace Cherry\Routing;

class Request
{

    private method {
        get
    };

    private url {
        get
    };

    public function __construct(string method, string url) {
        let this->method = method;
        let this->url = url;
    }

}

Но если я попытаюсь собрать его (в Ubuntu 18.04.4, 64-разрядная версия), он выдаст следующую ошибку (да, это полное сообщение об ошибке):

[ERROR] Unknown type: new

Я прокомментировал строку var request = new Routing\Request(method, route);, и эта конкретная c ошибка исчезла. Когда я раскомментирую это, ошибка появляется снова. Итак, я знаю, что это указанная строка c.

Я удалил аргумент method и route, чтобы посмотреть, вызывает ли он правильную функцию и вызывает ли он Cherry\Routing\Request::__construct, поскольку он жалуется на неправильную количество аргументов.

Но с аргументами он говорит, что не знает тип new.

Я что-то пропустил или это ошибка?

У меня есть другие функции, в которых я создаю экземпляры классов, и у меня там нет проблем.

Редактирование :

Я пытался установить переменную на null до:

var request = null;
let request = new Routing\Request(method, route);

но это не помогло.

Изменение типа переменной request на object тоже не помогло.

...