帮助我“获得”面向对象的PHP

时间:2011-03-10 16:47:40

标签: php

我可能会以PHP开发人员的身份通过,但我不会“得到”面向对象的一面,而且我很快将其整理出来。

在代码片段中,我编写了一些代码,用于从mongoDB中提取一些信息。我意识到我已经在那里使用了一些类但我没有构建任何类 - 它们只是MongoDB驱动程序提供的。 在foreach循环中,我有一些从MongoDB打印出来的变量。我想把foreach循环变成一个类,这样我就可以调用类似的东西:

print->Environment
print->Architecture

这使它美观,干净,简单。我想如果有人可以帮助我从我已经写过的东西中创建一个类,它可以帮助我“获取”类和对象。感谢所有人的帮助。

请考虑以下事项:

$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>';   
}

2 个答案:

答案 0 :(得分:4)

在我看来,你完全不了解OOP(除了使用->访问属性)。别担心,基础知识并不难学。您应该从The PHP Manual的OOP章节开始。

祝你好运,
阿林

答案 1 :(得分:0)

首先你可能想要

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

print->Environment
print->Architecture

其次,除非我们更多地了解环境和架构数据及其使用方式,否则我们将无法为您创建可用的类。

第三,通过查看如何实现对象和类,你将不会“获得”OOP,你应该学习封装,继承,抽象等。然后担心实现。