2

classこれは、メインとメインを使用した私のコードの縮小版ですfunction

'userName'内部で使用するには、ユーザーがその入力の値を取得する必要があり、内部をグローバル'mainFunction'にしようとしましたが、値を取得できませんでした。'userName''myForm'

どこでも使用できるように、値を'userName'外部で利用できますか?'mainClass'

 class mainClass {

  function myForm() {
      echo '<input type="text" value="'.$userName.'" />';
   }

 }   
 function mainFunction () {
    $myArray = array (

         'child_of' => $GLOBALS['userName']

      ) 
 }
4

3 に答える 3

1
class mainClass {
    public $username;
    function  __construct($username){
        $this->username = $username;
    }

    function myForm() {
        echo '<input type="text" value="'.$this->userName.'" />';
    }

 }

 function mainFunction () {
    $myArray = array (
        'child_of' => $this->username;
    );
 }
于 2013-03-03T09:57:58.427 に答える
1

どこでも使用できるように、「userName」の値を「mainClass」の外側で使用できますか?

はい。

まず、このようなクラス プロパティを定義する必要があります。

class MainClass
{

    private $_userName;

    public function myForm()
    {
        echo '<input type="text" value="'.$this->_userName.'" />';
    }
}

myForm() メソッド内でこのプロパティにアクセスする方法を見てください。

次に、このプロパティの getter メソッドを次のように定義する必要があります (または、プロパティをパブリックにすることができます)。

class MainClass
{

    private $_userName;

    public function getUserName()
    {
        return $this->_userName;
    }

    public function myForm()
    {
        echo '<input type="text" value="'.$this->_userName.'" />';
    }
}

次のようにユーザー名プロパティにアクセスできます

$main = new MainClass();
$userName = $main->getUserName();

MainClass クラスのインスタンスが必要であることに注意してください。

単純な概念から始めて、これを 100% 理解していることを確認することをお勧めします。また、静的メソッドでグローバル変数やより複雑なロジックを使用しないことをお勧めします。できるだけシンプルにするようにしてください。

敬具、ビクター

于 2013-03-04T12:02:56.227 に答える
-1

以下のコードは、Codeigniter get_instance メソッドの非常に最小化されたバージョンです。したがって、あなたの場合、このコードの最初のどこかに置くことができます:

/** Basic Classes to load the logic and do the magic */

class mainInstance {

    private static $instance;

    public function __construct()
    {
        self::$instance =& $this;
    }

    public static function &get_instance()
    {
        return self::$instance;
    }
}

function &get_instance()
{
    return mainInstance::get_instance();
}

new mainInstance();
/** ----------------------------------------------- */

そして、次のようにグローバル クラスを作成できます。

class customClass1 {

    public $userName = '';

      function myForm() {
          return '<input type="text" value="'.$this->userName.'" />';
       }

}

/** This is now loading globally */
$test = &get_instance();
//If you choose to actually create an object at this instance, you can call it globally later
$test->my_test = new customClass1(); 
$test->my_test->userName = "johnny";

/** The below code can be wherever in your project now (it is globally) */
$test2 = &get_instance();
echo $test2->my_test->myForm()."<br/>"; //This will print: <input type="text" value="johnny" />
echo $test2->my_test->userName; //This will printing: johnny

これは現在グローバルであるため、次のような独自の関数を作成することもできます:

function mainFunction () {
    $tmp = &get_instance();
    return $tmp->my_test->userName;
}

echo mainFunction();
于 2013-03-03T10:45:15.917 に答える