3

例如50个美国。现在我只在一个函数中使用 50 个状态:

函数 getStateInput() {
    $states = array('AL' => '阿拉巴马', 'AK' => '阿拉斯加',
        'AZ' => '亚利桑那'等);

    //使用$states
}

或者,您可以$states在自己的 states.php 中定义,然后像这样使用它:

函数 getStateInput() {
    包括('states.php');

    //使用$states
}

但出于某种原因,这让我感到害怕,因为我使用包含来定义局部函数变量。另一种方法是将 states 数组分配给 states.php 中的超全局变量(例如,我可以使用$_ENV['states'])。然后我可以去:

包括('states.php');

函数 getStateInput() {
    //使用 $_ENV['states']
}

是其中一个最好的还是有另一种更好的方法?

4

4 回答 4

4

常见的方法是分离关注点。你可以例如。拥有自己的类与地址相关的方法。此类将是存储有关可能状态的信息的自然场所,例如:

class Address {
    static STATES = array(
        'AL' => 'Alabama',
        'AK' => 'Alaska',
        'AZ' => 'Arizona',
        // ...
    );
}

// and then you can use it somewhere like that:
echo Address::$STATES['AL'];
于 2012-08-05T22:59:20.083 回答
1

为什么不让包含文件有一个返回状态数组的函数。然后在其他代码中使用该数组。这样你就不用处理任何范围变量。

// states.php
function getStates() {
    return $states;
}

// other.php
function getStateInput() {
     include('states.php');   
     $states = getStates();
     // Do stuff with $states
}
于 2012-08-05T22:56:26.477 回答
0

在您的include.php文件中(您必须包含此文件。在您的函数声明之前包含它):

$states = array('GA' => 'Georgia', 'SC' => 'South Carolina');

在你的脚本上:

include("include.php");
global $states;

function GetStateInput() {
   ///States are already available as $states
}

祝你好运!

于 2012-08-05T22:57:48.293 回答
0

我可能会这样做

包含.php

<?php
$array = array();

$array['foo'] = 'bar';
$array['oof'] = 'rab';
... etc.

return $array;
?>

框架.php

<?php
// previous stuff

function getStateInput()
{
    static $a = NULL;
    if($a === NULL)
        $a = include('include.php');
    // do whatever
    return $a;
}

// other stuff
?>

要么,要么只是在函数中定义数组。这将取决于数组有多大以及 api 的其余部分有多大。如果维护变得更容易将阵列移动到外部文件中 - 执行此操作。如果您在多个不同的函数或方法中使用该数组,请将其拉​​出。等等。你知道演习。

PHP 优化了文件包含,所以如果你不动态包含,不要太担心性能。

于 2012-08-05T23:25:59.160 回答