0

私はこのような機能を持っています:

function form($filename){
    $text="";
    if (file_exists(dirname(__FILE__)."/other/".$filename)){
        ob_start();
        include "other/".$filename;
        $text = ob_get_clean();
    }
    return $text;
}

そして、私のコードのどこかに、次のようなものがあります。

class First {
    public function execute()
        $an_array=array("hi","goodbye");
        return form("my_form.php");
}

$an_arrayここで、「my_form.php」の値を取得する方法を知りたいと思います。この関数formは、複数の変数を必要とする可能性のある他のファイルで使用されます。

編集

インクルードされたファイルが複数のパラメーターを読み取れるようにしたい。言い換えれば、他のクラスでは、次のようなものを持つことができます:

class Second {
    public function execute()
        $first_array=array("hi","goodbye");
        $second_array=array("other","another");
        return form("another_form.php");
}

この場合、ファイルの と の両方を読みたい$first_array$second_array思いanother_form.phpます。

編集2

form私の関数をphpの関数のように動作させる方法はありarray_pushますか? つまり、formの最後のパラメーターのように機能する 2 番目のパラメーターが必要ですarray_push

4

3 に答える 3

1

ナスティワン

<?php

function form($filename){
    $text = '';
    $FILE = dirname(__FILE__)."/other/".$filename;
    $SPECIALVARS = func_get_args();
    $allVars = explode(',', $SPECIALVARS[1]);
    foreach( $allVars as &$AV ) { $AV = trim($AV); }

    foreach( $SPECIALVARS as $k => $v ) {
        if( $k > 1 ) {
            $theKey = $k-2;
            $_tmp = str_replace('$', '', $allVars[$theKey]);
            // var_dump($_tmp);
            $$_tmp = $v;
        }
    }
    // var_dump($first_array); // now we have it
    if (file_exists($FILE)){
        ob_start();
        include $FILE; // here you can use your vars
        $text = ob_get_clean();
    }
    return $text;
}

class Copy {
    public function execute() {
        $an_array = array( "hi", "goodbye" );
        return form("my_form.php", '$an_array', $an_array);
    }
}

class Second {
    public function execute() {
        $first_array = array( "hi", "goodbye" );
        $second_array = array( "other", "another" );
        return form("another_form.php", '$first_array, $second_array', $first_array, $second_array);
    }
}

$s = new Second;    
$s->execute();
于 2013-02-07T09:55:03.307 に答える
1
function form($filename, $special = array()){
    $text="";
    $FILE = $filename;
    if (file_exists(dirname(__FILE__)."/other/".$filename)){
        ob_start();
        include $FILE; 
        $text = ob_get_clean();
    }
    return $text;
}


class Copy {
    public function execute() {
        $array = array();
        $array['first_array'] = array( "first", "second" );
        $array['second_array'] = array( "third", "fourth" );
        return form("my_form.php", $array);
    }
}

$copy = new Copy();
echo $copy->execute();

このようにして、複数のパラメーターを渡すことができます。$specialmy_form.php で利用可能になり、次のようになります。

Array (
    [first_array] => Array
        (
            [0] => first
            [1] => second
        )

    [second_array] => Array
        (
            [0] => third
            [1] => fourth
        )

)

アップデート:

変数名を変更したくない場合は、この方法で行うことができます

function form($filename, $special = array()){
    $text = '';
    if (file_exists(dirname(__FILE__)."/other/".$filename)){
        extract($special);
        ob_start();
        include $FILE; 
        $text = ob_get_clean();
    }
    return $text;
}


class Copy {
    public function execute() {
        return form("my_form.php", array(
                                'var1' => 'test',
                                'var2' => 'test2'
                                ));
    }
}

$copy = new Copy();
echo $copy->execute();

あなたmy_form.phpの変数で利用可能になります

echo $var1; // test
echo $var2; // test2
于 2013-02-07T10:13:29.857 に答える
0

ファイル: test.php

include "funcs.php";

class Copy {
    public function execute()
    {
        $an_array=array("hi","goodbye");
        return form("my_form.php",$an_array);
    }
}

$f=new Copy();
echo $f->execute();
?>

ファイル: funcs.php

<?php
function form($filename, $params){
    $text="";
    if (file_exists(dirname(__FILE__)."/other/".$filename)){
        ob_start();
        include "other/".$filename;
        $text = ob_get_clean();
    }
    return $text;
}

?>

ファイル: other/my_form.php

<?php
print_r($params);
?>
于 2013-02-07T09:59:05.677 に答える