2014-07-14 2 views
2

슬림 프레임 워크에 대한 좋은 소식을 듣고 있습니다. 튜토리얼의 어느 쪽도 MySQL 정보를 놓을 주소를 제외하고는.슬림 프레임 워크에서 MySQL 연결 정의하기?

나는 $dbCon = getConnection();

등을 참조하지만 여기서 나는 이름/PW/DB/등 호스트를 정의합니까?

+1

슬림은 내 지식에 대한 데이터베이스 연결을 제공하지 않습니다. – cmorrissey

+0

Slim은 데이터베이스 액세스 권한이 없지만 'orm 's'를 사용할 수 있습니다. [여기에 PHPactiveRecord '와 함께 사용하는 예제입니다.] (http://silentworks.co.uk/blog/development/using-phpactiverecord-with-slim-framework.html). –

답변

3

당신은 내가 당신이의 모든 인스턴스에로드 된 가져옵니다 config.php 파일에 자격 증명을 저장이 MVC 패턴으로 큰 성공을했다

function getConnection() { 
    $dbhost="yourdbhost"; 
    $dbuser="yourdbuser"; 
    $dbpass="yourdbpass"; 
    $dbname="yourdb"; 
    $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass); 
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    return $dbh; 
    } 
+3

소스 코드에 자격 증명이 생기기 때문에 개인적으로이 방법이 마음에 들지 않습니다. 나는 당신의 소스 컨트롤에 의해 무시되는 웹 루트 외부의 로컬 설정 파일로 자격 증명을 옮길 것이다. – ForrestLyman

+1

@ForrestLyman에 동의합니다. 데이터베이스 자격 증명에는 아무 것도 없습니다. – dSebastien

4

이러한 자격 증명을 로컬 구성 파일에 보관하는 것이 가장 좋습니다. 웹 루트 외부에 configs 폴더를 추가하고 local.php 구성 파일을 추가합니다.

.... 
/configs 
    local.php 
/public 
/vendor 
.... 

당신은 당신이 좋아하는 무엇이든을 구성하지만, 여기에 수있는 DB는 :

<?php 
// configs/local.php 
return array(
    'db' => ['user' => 'root', 'password' => 'root'] 
); 

는 그런 다음 응용 프로그램에서 파일을 포함하고 연결 작성 :

// public/index.php 
$config = include(__DIR__ . '/../configs/local.php'); 
$db = new PDO("mysql:host=localhost;dbname=dbname", $config['db']['user'], $config['db']['user']); 

$app->get('/', function() use ($app, $db) { 
    // do something with your db connection 
}); 
1

당신이 PDO를 구성 할 수 있습니다 외부 수업 :

class Connection 
    { 
     protected $db; 
     public function Connection() 
     { 
     $conn = NULL; 
      try{ 
       $conn = new PDO("mysql:host=YOUR_HOST;dbname=DB_NAME;charset=utf8;collation=utf8_unicode_ci", "USER_DB", "PASS_DB"); 
       $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      } catch(PDOException $e) { 
       echo 'ERROR: ' . $e->getMessage(); 
      } 
      $this->db = $conn; 
     } 

     public function getConnection() 
     { 
      return $this->db; 
     } 
    } 

그런 다음 슬림 (PHP는 객체 지향)에 :

<?php 

    class Proxy 
    { 
    require_once 'Connection.php'; 

    // init Slim 

    private $conn = NULL; 

    // Api Rest code... 


    # getConnection 
    public function getConnection(){ 
     if(is_null($this->conn)){ 
      $this->conn = new Connection(); 
     } 
     return $this->conn->getConnection(); 
    } 

또는 PHP는 더 OO는 :

<?php 

    require_once 'Connection.php'; 

    // init Slim 

    $conn = NULL; 

    // Api Rest code... 


    # getConnection 
    function getConnection(){ 
     global $conn; 
     if(is_null($conn)){ 
      $conn = new Connection(); 
     } 
     return $conn->getConnection(); 
    } 
관련 문제