0

だから私は2つのクラスがあります:

テーブルクラス

<?php
    class table {
        protected $id = null;
        protected $table = null;

        function __construct() {

        }

        function bind($data) {
            // print_r($data);
            foreach ($data as $key=>$value) {
               $this->key = $value;
               //   echo $key."--".$value;
               //     echo $this->$key;
            }
        }
   }
?>

ユーザークラス

<?php
    class user extends table
    {
        var $username = null;
        var $password = null;
        var $email = null;
        var $table = "user";
    }
?>

インデックスブートストラップもあります....

<?php
    include('table.class.php');
    include('user.class.php');

    $user = new user();
    $data = array("username" => "Forest", "password" => "*****",  "email"=>"foo@bar.com");    
    $user->bind($data);
    $classVars = get_class_vars(get_class($user));
    print_r($classVars);

?>

返すべきです:

Array(
    [username] => Forest,
    [password] => *******,
    [email]=>foo@bar.com
    [table] => user
)

代わりに、次を返します。

Array (
    [username] =>
    [password] =>
    [email] =>
    [table] => user

)

変数がスーパークラスにバインドされていない理由を教えてくれる親切な人がいますか?????

here によると、動作するはずです:

http://codeslayer2010.wordpress.com/2012/04/08/developer-journal-2012-03-30-building-a-php-database-connection-class-from-scratch-singleton-activerecord/

4

2 に答える 2

1

の代わりに使用していforeachます。bind$this->key = $value$this->{$key} = $value

インスタンスの変数 (クラスのデフォルトではない) を取得するには、 を使用しますget_object_vars()

于 2013-04-27T07:51:27.007 に答える
0

出力する必要があります:

いいえ、そうすべきではありません。get_class_varsクラスで定義されている変数を返します。インスタンス化されたオブジェクトのプロパティを探しているので、次を使用する必要があります。

$objectVars = get_object_vars($user);
于 2013-04-27T07:50:00.100 に答える