首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在PHP中获取准确的项目文件夹

如何在PHP中获取准确的项目文件夹
EN

Stack Overflow用户
提问于 2018-05-31 11:28:01
回答 2查看 105关注 0票数 -2

我真的对此做了很多研究,但似乎这一次与其他几次不同。所以..。我现在有一个项目文件夹todo-oop,我只想得到这个项目的确切位置/url,所以,我想得到http://localhost/todo-oop/

代码:

代码语言:javascript
复制
<?php
  $project_folder = explode('\\', dirname(__FILE__));
  $root_directory = $_SERVER['SERVER_NAME'] . '/' . end($project_folder);
?>

输出:

localhost/partials/css/todo.css

如果我检查视图源代码并单击url,它将返回错误的url:http://localhost/todo-oop/localhost/partials/css/todo.css

我想实现像laravel如何使用asset()助手函数处理他们的css/js/img文件。

EN

回答 2

Stack Overflow用户

发布于 2018-05-31 17:00:35

PHP最棒的一件事就是你可以阅读源代码。如果你想知道asset()函数是如何工作的,你可以直接阅读代码!

代码语言:javascript
复制
// Illuminate/Foundation/helpers.php
function asset($path, $secure = null)
{
    return app('url')->asset($path, $secure);
}

因此,您需要为asset函数提供一个路径,指向您想要包含的内容。asset函数依次将其提供给容器实例来解析( app()),然后Laravel开始施展魔法。简而言之,它只是尝试将正确的URL解析为您给定的路径。

Laravel的缺点是它使用了很多神奇的代码来防止样板。这通常很有用,但可能会让人很难看到内部发生了什么。框架通常在样板和魔术之间进行权衡,Laravel倾向于在任何可能的情况下放弃样板。

现在回答

Laravel做得非常聪明的是,只要有人连接到你的应用程序,你就可以设置一个属性/全局/变量。

代码语言:javascript
复制
// bootstrap/app.php
$app = new Illuminate\Foundation\Application(
    realpath(__DIR__.'/../')
);

// Illuminate/Foundation/Application
public function __construct($basePath = null) 
{
    if ($basePath) {
        $this->setBasePath($basePath);
    }
}

现在,您可以通过调用base_path()帮助器,从应用程序中的任何位置访问此路径(即项目根目录)。它实际上返回了我们刚刚设置的确切路径:

代码语言:javascript
复制
function base_path($path = '')
{
    return app()->basePath().($path ? DIRECTORY_SEPARATOR.$path : $path);
}

希望这个答案能对你有所帮助!

票数 0
EN

Stack Overflow用户

发布于 2018-05-31 11:35:57

尝尝这个

代码语言:javascript
复制
<?php echo "http://" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'].'/'; ?>

根据这个answer,希望这能起作用。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50616198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档