developer tip

PHP에서 클래스 대 함수를 사용하는 경우

copycodes 2020. 12. 1. 08:21
반응형

PHP에서 클래스 대 함수를 사용하는 경우


전구는 아직 이것을 위해 진행되지 않았습니다 ...

나는 함수를 사용하는 것보다 PHP에서 클래스를 사용하는 이점에 대한 이해하기 쉬운 설명을 정말 좋아합니다.

다음은 내가 지금 가지고있는 생각에 대한 간단한 예이며 클래스가 더 효율적인지 궁금합니다.

내가 PHP로 만든 미니 캘린더 위젯이 있다고 가정 해 보겠습니다. 함수 호출에 대해 생각하고 있습니다 miniCal('arrayVars1', 'var2'). 하지만 그 페이지에서 두 번 할 수 있습니다. 여기에서 클래스를 사용하여 리소스를 더 적게 사용하고 새 인스턴스를 만드시겠습니까?

지금 어떤 나무를 짖어 야하나요? 지금 나무가 벽돌 벽인 것 같아서 ...


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

수업은 일반적으로 성능 측면에서 어떤 이점도 제공하지 않지만 거의 부정적인 영향을 미치지 않습니다. 그들의 진정한 이점은 코드를 더 명확하게 만드는 것입니다.

PHP5 객체 지향 프로그래밍 가이드Wikipedia OOP 항목 을 읽어 보시기 바랍니다 .


PHP5 이후 일반적인 작업은 라이브러리 역할을하는 클래스를 만드는 것이 었습니다. 이렇게하면 기능을 구성하고 __autoload ();와 같은 클래스 기능을 활용할 수있는 이점이 있습니다.

예를 들어 데이터를 암호화하고 해독하는 두 가지 기능이 있다고 가정 해보십시오. 클래스로 래핑하고 (암호화라고합시다) 정적 함수로 만들 수 있습니다. 그런 다음 다음과 같은 함수를 사용할 수 있습니다 (초기화가 필요하지 않습니다 (예 : $ obj = 새 암호화)).

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

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

이것의 이점은 다음과 같습니다.

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

클래스를 사용하는 것은 함수를 그룹화하는 좋은 방법입니다.

차이점은 프로그래밍 패러다임의 사용에 있습니다. OOP에서는 클래스가 필요하지만 절차 적 패러다임에서는 필요하지 않습니다. 절차 적 패러다임에서는 모듈로 볼 수있는 파일의 함수를 그룹화 할 수 있습니다.

--- 편집하다 ---

절차 적 패러다임을 사용할 수 있습니다 . 이 패러다임에서는 수업이 실제로 필요하지 않습니다.

function miniCal($string_1, $string_2){
//do something   
}

//invoke function
miniCal('arrayVars1', 'var2');

OOP 패러다임을 사용할 수 있습니다 . 수업이 필요합니다.

class Calculation {

public static function miniCal($string_1, $string_2){
    //do something   
    }
}

//invoke function
Calculation::miniCal('arrayVars1', 'var2');

결론

두 패러다임의 작업이지만 위의 OOP 예제는 모든 계산 방법 (함수)을 포함하는 Calculations 개체를 사용하고 있습니다. Calculations 개체는 계산 함수를 그룹화하여 한 곳에 보관합니다.

이 예의 OOP 패러다임은 "단단한 책임"이라는 원칙을 따릅니다. 이것의이면에있는 아이디어는 코드를 우아하고 유지 보수 가능하며 읽기 쉽게 유지하는 것입니다.


함수는 애플리케이션의 핵심이며 클래스는 플레이트와 비슷합니다. 접시없이 고기를 먹는 것은 지저분하다. 하지만 고기가 없으면 식사가 없습니다.

응용 프로그램에 500 개의 함수가있는 경우 액세스 용이성을 위해 적어도 절반을 더 큰 컬렉션으로 그룹화 할 수 있습니다. 일반적인 명명 규칙 ( "Encryption_Encrypt", "Encycryption_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);
    }    
}

Or maybe you want to build a Form, you could make a form object that contains a list of inputs and such that you want to be inside the form when you decide to display it:

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");

Or as someone else suggested, a person:

class Person{

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

}

All are reasons to create classes as they represent something that has properties like a name or a job title, and may have methods, such as displaying a form.


Basically Both Do same work but by using classes you can manage your code in easier way, One more thing if we use class then we have to create object for calling functions define in it, while if we create functions directly then we don't need to create object.

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

반응형