我有一个网站&需要在多个页面中使用国家/地区列表。在某些页面上,我需要显示列表&在某些页面上,我需要填充该列表中的下拉列表。为此我知道以下方法。哪一个更好&为什么还是有其他更好的选择。我在某处读到,使用静态关键字会减慢代码速度并且每次创建对象也会减慢代码的速度,因为它每次都会分配和消耗内存。所以请详细说明什么是最好的出路。
方法A:
class Country
{
public static $CountryList = array('Country 1', 'Country 2', .....);
}
In my pages I will use it with :
$Countries = Country :: $CountryList;
方法B:
class Country
{
public $CountryList = array('Country 1', 'Country 2', .....);
}
In my pages I will use it with :
$Obj = new Country();
$CountryList = $Obj->CountryList;
方法C:
class Country
{
private $CountryList = array('Country 1', 'Country 2', .....);
public static function getList()
{
return $this->CountryList;
}
}
In my pages I will use it with :
$Obj = new Country();
$CountryList = $Obj->getList();
答案 0 :(得分:1)
正如我在评论中所说,我真的更喜欢使用数据库。它更灵活,面向未来。您可以拥有一个表country
,其中包含ID,ISO代码和您想要的任何内容,另一个表country_lang
包含国家/地区名称的翻译。这样做,你的代码保持不变并且工作相同,没有更新要做。
但是,如果您真的想在没有数据库的情况下将国家/地区保留在变量中,您可以根据需要使用多种解决方案。
如果您使用PHP 7.0+,则可以使用普通旧常量。
<?php
define('COUNTRIES', ['a', 'b']);
var_dump(COUNTRIES);
<强>赞成强>:
<强>缺点强>:
如果您使用的是PHP 5.6+,则可以使用类常量。
<?php
class Country
{
const COUNTRIES = ['a', 'b'];
}
<强>赞成强>:
<强>缺点强>:
您可以使用静态属性。
<?php
class Country
{
public static $countries = ['a', 'b'];
}
<强>赞成强>:
<强>缺点强>:
无论如何,根据您在这个特定情况下的需要选择最适合您的方法,它取决于您。