2011-09-10 3 views
0

私はクラスの周りに私の劣等心をラッピングしています。他の人々のコードを見て、それが自分のコードとどのように関連しているかを知ることは難しいです。私はあなたが私が関連する例を見ることができるように、私がクラスに持っている2つの単純な関数を回すことによって、それがどのように動作するかを私が助けてくれることを願っています。OOPでこの機能を実現するにはどうすればよいですか?

機能の簡単なカップル:このような関数に相当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'); 

答えて

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("https://stackoverflow.com/questions/ask"); 
$somevar->save_page(); 

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

編集:

Shefはコメントで指摘したように、あなたが本当に自分のクラスに類似した機能のグループ項目にしたいです。たとえば、DBに対して何かをするすべての関数は、フォームエラーチェックを処理する関数とは異なるクラスを持ちます。

は、したがって、あなたの例ではmake_url_friendlyはOOPスタイルのコードのようにビットを作るための方法はありませんsave_page

+0

'__construct'(ダブルアンダースコアを)知っているとして、それは何ができるか、クラスを言うことはできません。私は 'save_page'は別のクラスになければならないと思います。それは関連するページなので、' Page'クラス内の関数でなければなりません。 – Shef

+0

'__construct'を訂正してくれてありがとう、私は' save_page'が別のクラスになければならないことに同意します。私は、この場合、1つのクラスで直接翻訳を行うことに決めました。私は説明を追加すべきだったと思う。 –

+0

「クラス」に物を置くことは、整理とアクセスのためですか?私は本当に答えられたものの上のすべてを理解していませんが。私はクラス内のプライベート関数とパブリック関数の違いを調べています。 – willdanceforfun

2

から別のクラスになります。

他の回答と同様にOOP構文でコードを隠すことはできますが、実際にはOOPはありません。

make_url_friendly()関数はすべて正しい関数です。 save_pageについては

()それはいくつかのクラスのメソッドである可能性がありますが、誰も誰もがあなたのセットアップ

+0

私は参照してください。そのColのおかげで。私の設定は、通常、このような機能の束をfunctions.phpファイルに持つことです。私は基本的にこのファイルをすべてのページに含めます。それは仕事をするようですが、私は実際にこれに問題がないと私はそれのいずれかの限界を理解していません。私は繰り返しを避けるために他の関数で関数を使うことができるようです。それでも、OOPを学びたいので、私は何が欠けているのか理解することができます。 – willdanceforfun

関連する問題