2011-09-10 5 views
0

클래스를 중심으로 열등한 마음을 감싸고 있습니다. 그것은 다른 사람들의 코드를보고 그것이 내 자신의 코드와 어떤 관련이 있는지보기가 어렵다는 것을 발견함으로써 그것으로 고심하고 있습니다. 클래스에 포함 된 두 가지 간단한 함수를 돌려서 내가 어떻게 작동 하는지를 알 수 있기를 바란다.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에 해당 될 수 있는가?

답변

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'가 다른 클래스에 있어야한다는 점에 동의합니다. 나는이 경우에 단 하나의 클래스와 함께 곧바로 번역을하기로 결정했다. 나는 설명을 추가해야한다고 생각한다. –

+0

'수업'에 물건을 두는 것이 조직하고 액세스하기위한 것입니까? 나는 그 답변 된 것 이상의 모든 것을 정말로 이해하지 못한다. 클래스 내에서 개인 및 공용 함수의 차이점을 찾고 있습니다. – willdanceforfun

2

에서 다른 클래스에있을 것입니다.

다른 답변과 마찬가지로 OOP 구문으로 코드를 위장 할 수 있지만 실제로는 OOP가 없습니다.

make_url_friendly() 함수는 모두 올바른 함수입니다.

는 save_page에 관해서는()는 어떤 클래스의 방법이 될 수 있지만, 아무도 아무도이 설치

+0

나는 본다. 그 Col를 주셔서 감사합니다. 내 설치 프로그램은 대개 functions.php 파일에서 이와 같은 기능을 가지고 있으며 기본적으로이 파일을 모든 페이지에 포함시킵니다. 그것은 일을하는 것처럼 보입니다. 그리고 저는 이것에 정말로 문제가 없으며 그것의 한계도 이해하지 못합니다. 나는 반복을 피하기 위해 다른 함수에서 함수를 사용할 수있는 것처럼 보인다. 그래도 나는 OOP를 배우고 싶다. 그래서 나는 무엇을 놓치고 있는지 이해할 수있다. – willdanceforfun