如何使用OOP实现此功能?

时间:2011-09-10 08:32:02

标签: php oop

我把我的低级思想缠绕在课堂上。通过查看其他人的代码并发现很难看出它与我自己的代码有什么关系,它正在努力解决它。我希望你可以通过将我所拥有的两个简单函数转换为类来帮助我了解它是如何工作的,这样我就能看到一个相关的例子。

一些简单的功能:

function make_url_friendly($string) {

  $remove = array(',',' ','?','=','&','-','|');
  $replace = array('_','_','_','_','','_','');

  $string = strtolower(str_replace($remove,$replace,$string));  
  return $string;

}

function save_page($url) {

 $sql = 'INSERT INTO pages 
        SET url="' . mysql_real_escape_string(make_url_friendly($url)) . '" ';
 mysql_query($sql);

}


save_page('/questions/ask');

可能是oop等同于这样的函数?

2 个答案:

答案 0 :(得分:2)

没有办法在OOP风格中制作这么一点代码。

您可以像在其他答案中一样用OOP语法伪装您的代码,但实际上不会有OOP。

make_url_friendly()函数可以成为一个函数。

至于save_page(),它可能是某个类的方法,但没有人能说出它可能是什么类,因为没有人知道你的设置

答案 1 :(得分:0)

class URLHandler{

   // Class variables
   $url = "";

   // Constructors
   public URLHandler($newurl) {  // Old Style
      $this->__construct($newurl);
   }

   public __construct($newurl) {  // New Style
      $this->setUrl($newurl);
   }

   private function make_url_friendly($string) {
      $remove = array(',',' ','?','=');
      $string = strtolower(str_replace($remove,"_",$string));
      return $string;
   }

   public function save_page() {
      $sql = 'INSERT INTO pages 
        SET url="' . mysql_real_escape_string($this->url) . '" ';
      mysql_query($sql);

   }

   public function getUrl(){
      return $this->url;
   }
   public function setUrl($newurl){
      $this->url = $this->make_url_friendly($newurl);
   }
};


//save_page('/questions/ask');
$somevar = new URLHandler("/questions/ask");
$somevar->save_page();

$somevar->setUrl("/answers/answer");
$somevar->save_page();

修改

正如Shef在评论中指出的那样,你真的想将类似功能的项目分组到他们自己的课程中。例如,对DB执行某些操作的所有函数都将具有与处理表单错误检查的函数不同的类。

因此,在您的示例中,make_url_friendlysave_page

位于不同的类别中