PHP 에서 실 현 된 데이터 개체 맵 모드 상세 설명

본 논문 의 사례 는 PHP 가 실현 하 는 데이터 대상 맵 모델 을 서술 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
아니면 코드 말 하기:여 기 는 전략 모드 의 psr-0 코드 규범 을 따 릅 니 다.
데이터 시트:

데이터베이스 연결 파일 Db.php(이전'PHP 단일 모드 데이터베이스 연결 클래스 와 페이지 정적 화'에서 찾 을 수 없 으 면)
클래스 파일 Config.php 자동 불 러 오기(이전'PHP 정책 모드'에 가서 가 져 올 수 있 습 니 다)
입력 파일 DataUser.php

<?php
define('BASEDIR', __DIR__);
//                
require 'Config.php';
spl_autoload_register('Config::autolad');
//    
$user = new Data(1);
var_dump($user->id, $user->name, $user->money);
//        
$user->id = 1;
$user->name = 'zhangjianping';
$user->money = 10000;
?>

데이터 가 져 온 파일 Data.php

<?php
class Data
{
//   
public $id;
public $name;
public $money;
//       
protected $con;
//         
public function __construct($id)
{
  //     
  $this->con = DB::getInstance()->connect();
  //    
  $res = $this->con->query('select * from account where id = '.$id.' limit 1');
  $data = $res->fetch(PDO::FETCH_ASSOC);
  //            
  $this->id = $data['id'];
  $this->name = $data['name'];
  $this->money = $data['money'];
}
//         
public function __destruct()
{
  $this->con->query("update account set name = '{$this->name}', 'money = {$this->money}' where id = {$this->id}");
}
}
?>

다음은 공장 모드,등록 트 리 모드,데이터 대상 맵 모드 를 사용 하여 이 예 를 보완 하 겠 습 니 다.
  • 데이터베이스 연결 파일 Db.php
  • 클래스 파일 Config.php 자동 불 러 오기
  • 데 이 터 를 가 져 온 파일 Data.php
  • 우 리 는 원래 의 입구 파일 을 고 쳤 다.
    DataUser.php
    
    <?php
    define('BASEDIR', __DIR__);
    require 'Config.php';
    spl_autoload_register(Config::autoload);
    class DataUser
    {
      public function index()
      {
        //           
        $user = Factory::getUser(1);
        var_dump($user->id);
        $this->name();
        $this->money();
      }
      public function name()
      {
        $user = Factory::getUser(1);
        var_dump($user->name);
      }
      public function money()
      {
        $user = Factory::getUser(1);
        var_dump($user->money);
      }
    }
    ?>
    
    
    공장 류 Factory.php
    
    <?php
    class Factory
    {
      static function getUser($id)
      {
        //         ,    ,       ,                     ,     
        //  id           
        $key = 'user_'.$id;
        //         
        $user = Register::get($key);
        //                    
        if(!isset($user))
        {
          $user = new Data($id);
          $user = Register::set($key, $user);
        }
        return $user;
      }
    }
    ?>
    
    
    등록 기 클래스 Register.php
    
    <?php
    class Register
    {
      //       
      protected static $object;
      //      
      public static function set($key, $value)
      {
        self::$object[$key] = $value;
      }
      //       
      public static function get($key)
      {
        return self::$object[$key];
      }
      //       
      public static function _unset($key)
      {
        unset(self::$object[$key]);
      }
    }
    ?>
    
    
    이때 우리 가 Data.php 를 Data1.php 로 수정 하면 공장 모드 를 사용 하지 않 을 때 하나씩 클래스 이름 을 수정 해 야 합 니 다.지금 은 공장 모드 에서 만 수정 하면 됩 니 다.우 리 는 모든 대상 을 인쇄 할 수 있 습 니 다.이때 우 리 는 이 세 대상 이 모두 똑 같다 는 것 을 알 게 될 것 입 니 다.이것 은 우리 가 등록 기 모드 를 사 용 했 기 때 문 입 니 다.
    더 많은 PHP 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
    본 논문 에서 말 한 것 이 여러분 의 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

    좋은 웹페이지 즐겨찾기