2011-03-10 4 views
1

나는 PHP 개발자로서 아마 통과 할 수 있었지만 객체 지향적 인 측면을 "얻지"않았으며 시간을 많이 쪼개었다.도와주세요 "get"객체 지향 PHP

mongoDB에서 일부 정보를 가져 오기 위해 작성한 코드가 있습니다. 나는 거기에서 몇 가지 클래스를 사용했지만 MongoDB 드라이버가 제공하는 클래스를 만들지는 않았다는 것을 깨달았습니다. foreach 루프에는 MongoDB에서 출력되는 변수가 있습니다. foreach 루프를 클래스로 만들면 다음과 같이 부를 수 있습니다.

print->Environment 
print->Architecture 

멋지고 깨끗하고 단순하게 만듭니다. 클래스 나 오브젝트를 "얻는"데 도움이 될만한 사람이 있으면 이미 작성한 클래스에서 클래스를 만들 수 있습니다. 모든 도움을 감사하게 생각했습니다.

는 다음 생각해 보면 (떨어져 속성에 액세스 ->를 사용) OOP의 전혀 지식을 가지고

$gethost=$_GET['q']; 
try { 
    // open connection to MongoDB server 
    $conn = new Mongo('localhost'); 

    // access database 
    $db = $conn->factdb; 

    //authenticate 
    $db->authenticate('username','password'); 

    // access collection 
    $collection = $db->hosts; 

    // define what to find 
    $host = array(
     'host' => $gethost 
); 
    // disconnect from server 
    $conn->close(); 
} catch (MongoConnectionException $e) { 
    die('Error connecting to MongoDB server'); 
} catch (MongoException $e) { 
    die('Error: ' . $e->getMessage()); 
} 

$cursor = $collection->find($host); 
    foreach ($cursor as $value) { 
      echo '<tr><td><b>Environment</b></td><td>'.$value['facter']['environment']['value'].'</td><td>'.date("M j Y",$value['facter']['environment']['created_at']).'</td><td>'.date("M j Y",$value['facter']['environment']['updated_at']).'</td></tr>'; 
    echo '<tr><td><b>FQDN</b></td><td>'.$value['facter']['fqdn']['value'].'</td><td>'.date("M j Y",$value['facter']['fqdn']['created_at']).'</td><td>'.date("M j Y",$value['facter']['fqdn']['updated_at']).'</td></tr>'; 
    echo '<tr><td><b>Model</b></td><td>'.$value['allocations']['model']['value'].'</td><td>'.date("M j Y",$value['allocations']['model']['created_at']).'</td><td>'.date("M j Y",$value['allocations']['model']['updated_at']).'</td></tr>'; 
} 
+1

코드는 객체 기반 프로그래밍입니다. 실제 OOP 프로그래밍은 처음부터 새로운 객체를 만들거나 다른 객체를 확장/상속하는 작업을 포함합니다. –

답변

4

그것은 나에게 보인다. 걱정하지 마세요. 기본 사항은 배우기가 너무 어렵지 않습니다. The PHP Manual의 OOP 장부터 시작해야합니다. 우리는 환경 및 아키텍처 데이터에 대한 자세한 내용을 알고하지 않는 한 당신은 아마

print->Environment 
print->Architecture 

둘째하지

$Environment->print() 
$Architecture->print() 

를 원하는 것 모든

+2

기초 : http://www.php.net/manual/en/language.oop5.basic.php – MattB

+0

@MattB 내용과 소개를 건너 뛰고 싶다면 :). 게으른 독자. –

+0

입문 Java 과정을 수강하여 OOP의 기초를 배웠습니다. 그 후 PHP OOP는 많은 웹 사이트 응용 프로그램에서 CodeIgniter를 사용하여 많은 의미를 갖게되었습니다. –

0

먼저

행운을 빌어 요,
알린 어떻게이 우리는 사용 가능한 클래스를 만들 수 없을 것입니다.

세 번째로 객체와 클래스가 구현되는 방법을 살펴보면 OOP을 "얻지"않을 것이므로 캡슐화, 상속, 추상화 등을 배우고 구현에 대해 걱정해야합니다.

+0

고마워,하지만 어딘가에서 시작해야하고 클래스와 객체는 시작할 수있는 곳이다. 기본 사항을 확인한 후 상속 등에 대해 걱정할 수 있습니다. – jaxxstorm

+0

또한 print-> Architecture에서 foreach 루프의 $ value [ 'facter'] [ 'environment'] [ 'value']로 정의 된 변수를 취하여 태그 내부에 인쇄해야합니다. $ 값은 에 의해 정의됩니다. $ cursor = $ collection-> find ($ host); foreach ($ cursor as $ value) { } 기본적으로 배열의 값을 가져 오는 함수가있는 "인쇄"(또는 환경) 클래스를 원합니다. $ value [ 'factor'] [ 'environment'] [ ' 값 '] (필요하다면 환경 변수를 배열 값으로 바꾼다. – jaxxstorm

+0

@Frap ** OOP의 기본 개념을 사용하지 않는다면 객체 사용에 ** 전혀 문제가 없다 ** 이해할 때까지 함수형 프로그래밍을 고수하라 * 왜 * 객체를 필요로합니다 .wikipedia에서 oop를 읽는 것으로 시작하십시오. 그런 다음 객체 사용으로 얻을 수있는 이점을 이해하면 구현 방법을 탐색 할 수 있습니다. 현재 달성하려는 기능 (두 번째 설명에 설명 된대로) * * 객체를 사용하여 구현하면 안됩니다. – Ivan

관련 문제