it-source

클래스 사용 시기 vs.PHP에서의 기능

criticalcode 2023. 9. 18. 21:30
반응형

클래스 사용 시기 vs.PHP에서의 기능

아직 전구가 안 켜져 있어요

저는 단순히 함수를 사용하는 것보다 php로 클래스를 사용하는 것의 장점에 대해 쉽게 이해할 수 있는 설명을 정말 원합니다.

제가 지금 생각하고 있는 간단한 예는 다음과 같습니다. 수업이 더 효율적인지 궁금해하고 있습니다.

내가 php로 만든 미니 캘린더 위젯이 있다고 치자.그 기능을 호출할까 생각 중입니다.miniCal('arrayVars1', 'var2') 그에서 두 이나 할 . 하지만 그 페이지에서 두 번 할 수도 있습니다.여기서 클래스를 사용하여 리소스를 적게 사용하고 새로운 인스턴스를 생성합니까?

내가 무슨 나무에서 짖어야 할까요? 지금 그 나무는 벽돌담처럼 느껴지기 때문입니다.

클래스는 데이터를 개체로 표현하는 데 사용됩니다.사용자의 데이터나 경매 입찰과 같은 것을 표현하는 경우 사용자 개체 또는 AuctionBid 개체를 만들면 해당 데이터를 더 쉽게 함께 보관하고 코드에 전달하며 독자가 쉽게 이해할 수 있습니다.이러한 클래스에는 특성(숫자, 문자열 또는 기타 개체와 같은 데이터 필드)과 메서드(모든 클래스에서 작동할 수 있는 함수)가 있습니다.

수업은 보통 성과 측면에서 어떤 이점도 제공하지 않지만, 부정적인 영향도 거의 주지 않습니다.그들의 진짜 이점은 코드를 더 명확하게 만드는 것입니다.

PHP5 Object-Oriented Programming 가이드와 Wikipedia OOP 항목을 읽는 것을 추천합니다.

PHP5 이후 공통적으로 수행한 작업은 라이브러리 역할을 하는 클래스를 만드는 것이었습니다.이를 통해 기능을 구성하고 __autoload()와 같은 클래스 기능을 활용할 수 있는 이점을 얻을 수 있습니다.

예를 들어, 데이터를 암호화하고 해독하기 위한 두 가지 함수가 있다고 가정해 보겠습니다.클래스에 래핑하고 정적 함수로 만들 수 있습니다(암호화라고 함).그런 다음 이와 같은 기능을 사용할 수 있습니다(초기화가 필요 없는 경우에는 $obj = new Encryption).

$encrypted_text = Encryption::encrypt($string);

그리고.

$decrypted_text = Encryption::decrypt($string);

이점은 다음과 같습니다.

  1. 암호화 기능이 함께 그룹화되고 구성됩니다.사용자와 코드를 유지하는 모든 사용자는 암호화 기능을 어디에서 찾을 수 있는지 알고 있습니다.
  2. 이것은 매우 분명하고 읽기 쉽습니다.유지관리에 좋습니다.
  3. __autoload()를 사용하여 클래스를 자동으로 포함할 수 있습니다.즉, 내장된 기능처럼 사용할 수 있습니다.
  4. 자체 클래스와 자체 파일에 포함되어 있기 때문에 재사용이 가능하고 새 프로젝트로 쉽게 포팅할 수 있습니다.

클래스를 사용하는 것은 함수를 그룹화하는 데 좋은 방법입니다.문제는 어떤 기능들이 함께 속해야 하느냐는 것입니다.여러분은 아마 '낮은 결합, 높은 응집력'이라는 말을 들어보셨을 겁니다.이 답변에서는 '고응집력'에 초점을 맞춰 보겠습니다.

몇 가지 함수를 사용하여 서로 관련된 계산을 수행한다고 가정해 보겠습니다.다음과 같은 경우:

function plus1($a){
    return $a + 1;
}

function plus2($a, $b){
    return $a + $b;
}

function plus3($a, $b, $c){
    return $a + $b + $c;
}

function plus4($a, $b, $c, $d){
    return $a + $b + $c + $d;
} 

서로 관련이 있는 함수들을 그룹화하는 것이 타당할 것입니다.

class PlusCalculator {

    public function plus1($a){
        return $a + 1;
    }
    
    public function plus2($a, $b){
        return $a + $b;
    }
    
    public function plus3($a, $b, $c){
        return $a + $b + $c;
    }
    
    public function plus4($a, $b, $c, $d){
        return $a + $b + $c + $d;
    }
}

그렇다면 언제 기능 대신 수업을 사용해야 할까요?그 답은 프로그래밍 패러다임과 스타일의 사용에 있습니다.O.O.P.에서는 수업이 필요하지만 절차 패러다임에서는 덜 필요합니다.순기능 프로그래밍 언어에서는 수업이 없습니다.

하지만 O.O.P. 언어에서는 그룹 함수가 일관성이 있을 때 클래스에 그룹 함수라고 말하고 싶습니다.

기능은 응용 프로그램의 핵심이고 클래스는 접시에 가깝습니다.접시 없이 고기를 먹으면 지저분합니다.하지만 고기가 없으면 식사가 없습니다.

응용프로그램에 500개의 기능이 있는 경우, 접근을 쉽게 하기 위해 그 중 절반 이상을 더 큰 컬렉션으로 그룹화할 수 있습니다.일반적인 명명 규칙("Encryption_Encrypt", "Encryption_Decrypt" 등)을 고안할 수 있습니다.하지만 수업은 더 쉽습니다.응용 프로그램에 12개의 기능만 있다면 1개 또는 클래스가 있다면 아마도 생존할 수 있을 것입니다.

수업 시간에 데이터/속성을 저장할 필요가 별로 없습니다.저는 그것들을 데이터베이스에 저장하는 편입니다.그래서 저는 수업의 그런 면을 자주 활용하지 않았습니다.

수업은 또한 다형성을 허용해서 도움이 될 수 있습니다.매우 유사한 클래스가 여러 개 있거나 클래스에 여러 가지 변형이 있는 경우 코드를 저장할 수 있습니다.프랑켄슈타인 같은 다목적 교실을 만들 필요도 없이 말입니다

다음 질문에 대한 답변으로 OOP 스타일 클래스를 사용할 수 있는 장소 목록이 있습니다. https://stackoverflow.com/questions/2035449/why-is-oop-hard-for-me/2035482#2035482

기본적으로, 당신이 그 안에 있는 것들을 표현하고 싶을 때마다.고유한 연결이 있는 데이터베이스 변수처럼.그래서 저는 그것을 보관할 것입니다. 그래서 저는 그것을 보관할 것입니다.mysql_query는 항상 올바른 연결을 사용합니다.

class MySQL extends Database
{
    public function connect($host, $user, $pass, $database)
    {        
        $this->connection = mysql_connect($host, $user, $pass);
        $this->select_db($database);
    }

    public function query($query)
    {
        return mysql_query($query, $this->connection);
    }

    public function select_db($database)
    {
        mysql_select_db($database);
    }    
}

또는 양식을 작성하고 싶을 수도 있습니다. 입력 목록이 포함된 양식 개체를 만들어 표시하기로 결정할 때 양식 안에 있을 수 있습니다.

class Form
{
    protected $inputs = array();
    public function makeInput($type, $name)
    {
         echo '<input type="'.$type.'" name="'.$name.'">';
    }

    public function addInput($type, $name)
    {
         $this->inputs[] = array("type" => $type,
                "name" => $name);
    }

    public function run()
   {
       foreach($this->inputs as $array)
       { 
          $this->makeInput($array['type'], $array['name'];
       }
    }
}

$form = new form();

$this->addInput("text", "username");
$this->addInput("text", "password");

또는 다른 사람이 제안한 것처럼, 사람은:

class Person{

    public $name;
    public $job_title;
    // ... etc....

}

이름이나 직함과 같은 속성을 가진 클래스를 나타내며 양식을 표시하는 등의 방법이 있을 수 있으므로 모두 클래스를 만드는 이유입니다.

기본적으로 둘 다 동일한 작업을 수행하지만 클래스를 사용하면 코드를 보다 쉽게 관리할 수 있습니다. 클래스를 사용하면 클래스에 정의된 함수를 호출하기 위한 개체를 만들어야 하는 반면 직접 함수를 생성하면 개체를 생성할 필요가 없습니다.

언급URL : https://stackoverflow.com/questions/2122123/when-to-use-a-class-vs-function-in-php

반응형