1

私はこれをしたいと思っています:

/* example filename: config_load.php */

$config_file = "c:\path\to\file.php";

function read_config($file = &$config_file)
{
$settings = array();
$doc = new DOMDocument('1.0');
$doc->load($file); 
$xpath = new DOMXPath($doc); 
$all=$xpath->query('appSettings/add');
foreach ($all as $setting) {$settings[$setting->getAttribute('key')]=$setting->getAttribute('value');}

return $settings;
}

/* end config_load.php */

したがって、実際にファイルを呼び出すと、次のようになります-

require_once "config_load.php";
// $config_file = "c:\path\to\file2.php"; //could also do this
$config = read_config();

このように、ファイルを指定しない場合、デフォルトの構成ファイルが読み取られます。関数を呼び出す前に、どこにでも$config_fileを定義することもできます。また、config_loadファイルにアクセスできない人は、別のファイルをロードできることを心配する必要はありません。read_config()を呼び出す前に、どこにでもファイルを定義できます。

4

2 に答える 2

0

不可能です:

デフォルト値は、(たとえば)変数、クラスメンバー、または関数呼び出しではなく、定数式である必要があります。

〜http ://www.php.net/manual/en/functions.arguments.php#functions.arguments.default

ただし、次のように回避できます。

function read_config($file = false) {
    global $config_file;
    if ($file === false) $file = $config_file;

    $settings = array();
    $doc = new DOMDocument('1.0');
    $doc->load($file); 
    $xpath = new DOMXPath($doc); 
    $all=$xpath->query('appSettings/add');
    foreach ($all as $setting) {$settings[$setting->getAttribute('key')]=$setting->getAttribute('value');}

    return $settings;
}

またはこのように:

function read_config($file = false, $config_file = false) {
    if ($file === false && $config_file !== false) $file = $config_file;

    $settings = array();
    $doc = new DOMDocument('1.0');
    $doc->load($file); 
    $xpath = new DOMXPath($doc); 
    $all=$xpath->query('appSettings/add');
    foreach ($all as $setting) {$settings[$setting->getAttribute('key')]=$setting->getAttribute('value');}

    return $settings;
}
于 2012-05-25T13:20:41.797 に答える
-1

はい、できます:

<?php

$greet = function()
{
   return "Hello";
};

$a = $greet();
echo $a;
?>

詳細はこちら: http: //php.net/manual/en/functions.anonymous.php

于 2012-05-25T13:46:21.350 に答える