1

これは私のコードです:

<?php

class VortexORM {

    private static $orm = null;

    public function __get($name) {
        return $this->$name;
    }

    public function __set($name, $value) {
        $this->$name = $value;
    }

    public static function getInstance() {
        if (VortexORM::$orm == null)
            VortexORM::$orm = new VortexORM();
        return VortexORM::$orm;
    }

    public static function set($name, $value) {
        $orm = VortexORM::getInstance();
        //echo "Setting [ <b>{$name}</b> ::   <i>{$value}</i>]";
        $orm->$name = $value;
    }

    public static function get($name) {
        $orm = VortexORM::getInstance();
        // echo "Getting [ <b>{$name}</b> ::   <i>{$orm->$name}</i>]";
        return $orm->$name;
    }

}

私が使用するデータを取得するには:

var_dump(VortexORM::get('admin_links'));
var_dump(VortexORM::get('admin'));

私が使用するデータを設定するには:

VortexORM::set('admin_links',array(....));

ただし、次の警告が表示されます。

A PHP Error was encountered
Severity: Notice
Message: Undefined property: VortexORM::$admin_links
Filename: Vortex/VortexORM.php
Line Number: 8
NULL
A PHP Error was encountered
Severity: Notice
Message: Undefined property: VortexORM::$admin
Filename: Vortex/VortexORM.php
Line Number: 8

これらの警告が表示されるのはなぜですか?

CodeIgniter で静的関数としてこのようにアクセスできるようにしたい:

$this->vortexorm->admin_links = array(....);
4

1 に答える 1

-1

OK、私はこのコードをテストしました:

    <?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

class VortexORM {

    private static $orm = null;

    public function __get($name) {
        return $this->$name;
    }

    public function __set($name, $value) {
        $this->$name = $value;
    }

    public static function getInstance() {
        if (VortexORM::$orm == null)
            VortexORM::$orm = new VortexORM();
        return VortexORM::$orm;
    }

    public static function set($name, $value) {
        $orm = VortexORM::getInstance();
        //echo "Setting [ <b>{$name}</b> ::   <i>{$value}</i>]";
        $orm->$name = $value;
    }

    public static function get($name) {
        $orm = VortexORM::getInstance();
        // echo "Getting [ <b>{$name}</b> ::   <i>{$orm->$name}</i>]";
        return $orm->$name;
    }

}

VortexORM::set('admin_links',"test");

var_dump(VortexORM::get('admin_links'));

それは私にとってはうまくいきました。次の出力が得られます。

string(4) "test" 

つまり、設定前のプロパティを取得しようとしていただけではないでしょうか? または、詳細を教えてください。また、 codeigniter でドクトリンを簡単に使用できる新しい ORM を作成しようとしているのはなぜですか?

于 2013-02-16T07:51:20.453 に答える