查找数组可以存储在类外吗?

时间:2014-11-08 21:46:42

标签: php oop

我刚刚开始了解OOP并正在转换过程中的一个小型现有网站。我有一个庞大的全球数组($ countries),我存储国家代码,两种不同语言的名称,以及大约240个国家/地区的国际呼叫代码。我想创建一个类(Country),其方法可以从$ countries查找值。我是否需要将数组存储在类中,还是可以将其存储在单独的文件中?如果我可以将它放在一个单独的文件中,我将如何在我的方法中访问它?

2 个答案:

答案 0 :(得分:1)

您绝对应该存储类代码之外的国家/地区列表,以避免每次更新列表时更改源代码。取决于您的用例,它可以是文件或数据库表。

您的查找类应该获取在构造数据时从何处加载数据的信息。

这样的事情:

class CountryProvider {

    protected $countries = [];

    public function __construct($dataFile)
    {
        $this->loadDataFromFile($dataFile);
    }

    protected function loadDataFromFile($dataFile)
    {
        // load your file here into $countries property
    }

    public function findCountryByCode($code)
    {
        // do your lookup here
    }
}

$countryProvider = new CountryProvider('/path/to/your/file');
$country = $countryProvider->findCountryByCode('SOME_COUNTRY_CODE');

答案 1 :(得分:0)

是,从该文件返回数组,然后使用它:

$array = include('file.php')

http://php.net/manual/en/function.include.php

<强> file.php

<?php

return array(
'name' => 'Josh Smith'
);

<强>的index.php

<?php

$arr = include('file.php');
var_dump($arr);

Class Whatever

class Whatever {


    public function getCountries() {

        $arr = include('file.php');
        return $arr;

    }

}


$what = new Whatever();
$c = $what->getCountries();
var_dump($c);