有什么方法可以确定当前文件是“根”文件(由 apache 请求,还是通过 CLI 运行)还是包含文件?
basename($_SERVER['SCRIPT_FILENAME']) != basename(__FILE__)
会工作,但它只能基于文件名,而不是整个路径,所以有点hacky。如果有更好,更优雅的方式来做到这一点,我会更喜欢。
一点上下文
我正在编写一个名为Scaffold的 PHP 5.4+ API 框架,这对于api first方法非常有用。当前的问题是,许多编写api 第一个应用程序的人,通过应用程序中的类来使用他们的 api。
$user = Scaffold::get('/users/nathaniel');
一个很好的方法是,如果那是实际的 api,而不是随后向服务器发送 Web 请求。这样,您就可以避免 HTTP 协议的开销。
我对如何做到这一点有一个很好的想法,但问题是,我需要知道我是否应该将响应发送到浏览器(编码和所有)或等待手动调用Scaffold::request
(或其任何别名,Scaffold::get
被只是其中之一。
我决定这样做的方法是检查应用程序的根文件(通常通过 apache 请求的文件)是否被实际请求,或者是否包含在不同的文件中。