包括具有json mime类型的php文件,而不更改包含该页面的页面的mime类型

时间:2019-03-06 19:45:36

标签: php json

在一个PHP脚本中,我想获取由另一个PHP脚本动态生成的json数据。

作为示例,让我们使用动态PHP生成的JSON文件的简单示例:

<?php
// note: unlike this simplified example, the data in my script is dynamically generated
$some_data = array(
    'color'  => 'blue',
    'number' => 33,
    'length' => 'long'
);
header('Content-Type: application/json');
echo json_encode($some_data);

...将呈现此json文件:

{ "color": "blue", "number": 33, "length": "long" }

现在如何从另一个PHP文件中包含此PHP文件,以便可以动态获取该数据?

如果我使用$data = include 'json_data.php';,它不将数据存储在$ data变量中,则需要在其中包含定义的mime类型标头,并确定页面是该mime类型,而不是从中确定数据。包括的是那个哑剧类型并且是单独的。

file_get_contents()fopen()仅返回实际的PHP代码,而不呈现它并返回结果json数据。

我可以使用cURL ...

<?php
$c = curl_init();
curl_setopt($c, CURLOPT_HEADER, false);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_URL, 'https://www.example.com/json_data.php');
header('Content-Type: application/json');
echo curl_exec($c);
curl_close($c);

...但是访问本地文件似乎不算过分吗?另外,这将需要在我的本地无业游民开发环境中进行一些额外的设置工作,make my local file HTTP-accessible for cURL to be able to access it

1 个答案:

答案 0 :(得分:1)

为什么不创建一个函数来处理返回JSON(或用于创建JSON的数组)的逻辑,并在两个脚本中都使用它,所以不必只包含第一个PHP文件。包含共享功能的文件。

这是我的意思:

<?php 

function getJson() 
{

    // Your real logic, not static content

    return [
        'color'  => 'blue',
        'number' => 33,
        'length' => 'long'
    ];
}

如果您在自己的PHP文件中具有上述功能,则可以在编写的两个PHP脚本中包含(或要求使用)该功能。