如何在php中指定相对路径?

von4xj4u  于 2022-12-17  发布在  PHP
关注(0)|答案(2)|浏览(193)

我在src/Mess/View/pages中有registration.phtml文件,在src/Mess/View/Views中有registrationView.php文件。如何在registrationView.php文件中指定registration.phtml文件的相对路径?这是代码i registrationView.php '

class RegistrationView extends View
{
public ValidationAttributes $validation;

public function __construct(Action $registration)
{
    parent::__construct(src/Mess/View/pages/registration.phtml', [
        'registration' => $registration,
    ]);
    $this->validation = $registration->validationAttributes([
        'login',
        'password',
        'passwordRepeat',
        'firstName',
        'lastName',
        'email',
        'phoneNumber',
        'birthDate',
        'gender',
        'avatar',
    ]);
}
slhcrj9b

slhcrj9b1#

我假设您使用父::__构造中的给定字符串作为路径。

parent::__construct(__DIR__ . '/../pages/registration.phtml', [
        'registration' => $registration,
]);
jjhzyzn0

jjhzyzn02#

您应该会收到一个解析错误,因为缺少引号,而且src目录绝不是Views的子目录:

src
    Mess
        View
            pages
                registration.phtml
            Views
                registrationView.php

我的建议是不要使用相对路径,因为当你开始嵌套include时,相对路径很难管理,你可以使用__DIR__ the magic constantdirname() function来构建绝对路径:

echo dirname(__DIR__) . '/pages/registration.phtml';

src/Mess/View/Views/registrationView.php运行此命令将打印/path/to/project/src/Mess/View/pages/registration.phtml,无论当前工作目录如何,/path/to/project/src/Mess/View/pages/registration.phtml都有效。
但是,如果你创建一些实用常量,让你一劳永逸地忘记亲属路径,一切都会变得更容易,比如:

parent::__construct(PROJECT_ROOT . PAGES . 'registration.phtml', [
    'registration' => $registration,
]);
// PROJECT_ROOT is `/path/to/project/`
// PAGES is `pages/`

或者只是:

parent::__construct(PAGES . 'registration.phtml', [
    'registration' => $registration,
]);
// PAGES is `/path/to/project/src/Mess/View/pages/`

相关问题