programing

MongoDB 및 코드 점화기

oldcodes 2023. 5. 24. 22:22
반응형

MongoDB 및 코드 점화기

CodeIgniter의 MongoDB로 작업할 수 있는 튜토리얼, 라이브러리 등을 안내하는 것을 도와줄 수 있는 사람이 있습니까?

"CodeIgniter 방식"인지는 모르겠지만 현재 데이터베이스 연결을 저장하기 위한 추가 속성으로 Mongo 클래스를 확장하는 CodeIgniter 라이브러리를 만들었습니다.

여기 제 프로젝트의 관련 코드 파일이 있습니다.

구성/몽고php

$config['mongo_server'] = null;
$config['mongo_dbname'] = 'mydb';

도서관/몽고php

class CI_Mongo extends Mongo
{
    var $db;

    function CI_Mongo()
    {   
        // Fetch CodeIgniter instance
        $ci = get_instance();
        // Load Mongo configuration file
        $ci->load->config('mongo');

        // Fetch Mongo server and database configuration
        $server = $ci->config->item('mongo_server');
        $dbname = $ci->config->item('mongo_dbname');

        // Initialise Mongo
        if ($server)
        {
            parent::__construct($server);
        }
        else
        {
            parent::__construct();
        }
        $this->db = $this->$dbname;
    }
}

그리고 샘플 컨트롤러는

컨트롤러/컨트롤러php

class Posts extends Controller
{
    function Posts()
    {
        parent::Controller();
    }

    function index()
    {
        $posts = $this->mongo->db->posts->find();

        foreach ($posts as $id => $post)
        {
            var_dump($id);
            var_dump($post);
        }
    }

    function create()
    {
        $post = array('title' => 'Test post');
        $this->mongo->db->posts->insert($post);
        var_dump($post);
    }
}

MongoDB는 CodeIgniter 커뮤니티 내에서 매우 잘 지원됩니다. 시간을 내어 다음을 살펴보십시오. :p

저는 Stephen Curran의 예를 좋아합니다. 단순하고 PHP 내에서 작성된 많은 기능 없이 Mongo에 대한 인터페이스를 허용하기 때문입니다. 저는 제가 추구하는 것에 대해 때때로 거대한 추상화 클래스를 발견하는 경향이 있습니다.

데이터베이스 인증을 포함하도록 예제를 확장했습니다.mongo 인증에 대해 알아보려면 http://www.mongodb.org/display/DOCS/Security+and+Authentication 를 방문하십시오. 연결 중인 mongo 서버에 대해 인증을 활성화하는 것을 잊지 마십시오.

또한 기존 스타일의 컨스트럭터 함수를 __construct로 변경하여 Mongo Connection Exceptions가 당신의 사용자 이름과 비밀번호를 나타낼 수 있도록 처리하고 있습니다.

구성/몽고php

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

$config['mongo_server'] = 'localhost';
$config['mongo_dbname'] = 'my_mongo_db';
$config['mongo_username'] = 'mongo_user';
$config['mongo_password'] = 'password1234';

/* End of file mongo.php */

도서관/몽고php

<?php

class CI_Mongo extends Mongo{

    protected $db;

    function __construct()
    {   
        // Fetch CodeIgniter instance
        $ci = get_instance();
        // Load Mongo configuration file
        $ci->load->config('mongo');

        // Fetch Mongo server and database configuration
        $server = $ci->config->item('mongo_server');
        $username = $ci->config->item('mongo_username');
        $password = $ci->config->item('mongo_password');
        $dbname = $ci->config->item('mongo_dbname');

        // Initialise Mongo - Authentication required
        try{
            parent::__construct("mongodb://$username:$password@$server/$dbname");
            $this->db = $this->$dbname;
        }catch(MongoConnectionException $e){
            //Don't show Mongo Exceptions as they can contain authentication info
            $_error =& load_class('Exceptions', 'core');
            exit($_error->show_error('MongoDB Connection Error', 'A MongoDB error occured while trying to connect to the database!', 'error_db'));           
        }catch(Exception $e){
            $_error =& load_class('Exceptions', 'core');
            exit($_error->show_error('MongoDB Error',$e->getMessage(), 'error_db'));           
        }
    }
}

CodeIgniter에서 MongoDB와 함께 작업하는 것은 다른 곳에서 작업하는 것과 크게 다르지 않을 것입니다.

생성자에서 연결하고 나중에 메서드에 사용할 $this->conn을 저장하는 MongoDB 라이브러리를 통합할 수 있습니다.

그런 다음 컨트롤러의 conn 속성으로 직접 작업하거나 MongoDB 라이브러리에서 몇 가지 메서드를 만들어 이 작업을 수행합니다.

MongoDB로 작업하기 위한 일반 PHP 튜토리얼을 보려면 여기를 보십시오.

기꺼이 이것을 위해 도서관을 만들고 싶지만 가격이 있을 것입니다.:-p

저는 MongoDB with CI를 사용하고 있으며 다음과 같은 사항을 생각해냈습니다.저에게는 효과가 있지만, 어느 정도 조정이 가능할 것이라고 확신합니다.나중에 수정하는 것에 대해 걱정하겠지만 지금은 제가 원하는 대로 됩니다.

"database_conn.php"라는 모델을 만들었습니다.

class Database_Conn extends Model {

    function _connect() {
        $m = new Mongo();

        $db = $m->selectDB( "YOUR DATABASE NAME" );
        return $db;
    }
}

그러면 모델의 컬렉션에 연결해야 하는 경우.

$collection = Database_Conn::_connect()->selectCollection( "COLLECTION NAME" );

언급URL : https://stackoverflow.com/questions/2248789/mongodb-and-codeigniter

반응형