Namespace와 Class 생성 및 사용

Namespace와 Class 생성 및 사용

Namespace는 PHP에서 코드를 구조화하고 격리하는 데 사용되며, 클래스 생성은 객체 지향 프로그래밍에서 클래스를 정의하고 인스턴스를 생성하는 과정입니다.

<?php

namespace MyNamespace;

// Namespace 정의
// 동일한 이름을 가진 클래스를 다른 Namespace에서 구분할 수 있도록 합니다.
// 네임스페이스는 디렉토리 구조와 유사하며, 역슬래시(\)로 구분됩니다.
// 예: namespace MyNamespace;
class MyClass
{
    // Class 생성
    // 클래스는 관련된 속성(변수)과 동작(메서드)을 포함하는 객체 지향 프로그래밍의 기본 단위입니다.
    // 클래스는 특정한 기능을 구현하기 위해 사용됩니다.

    private $name;

    public function __construct($name)
    {
        $this->name = $name;
    }

    public function sayHello()
    {
        echo "Hello, " . $this->name;
    }
}
// Class 사용
// 클래스를 사용하여 객체를 생성하고, 해당 객체의 메서드를 호출할 수 있습니다.

// 같은 Namespace 내에서는 클래스 이름을 바로 사용할 수 있습니다.
$object = new MyClass("John");
$object->sayHello(); // 출력: Hello, John

// 다른 Namespace에서 클래스를 사용하려면 Namespace를 지정해야 합니다.
$object2 = new \OtherNamespace\OtherClass();

Namespace와 Class의 사용 이유:

  1. 코드 구조화: Namespace를 사용하면 코드를 계층적으로 구조화하여 관련된 클래스를 그룹화할 수 있습니다. 이를 통해 코드의 가독성과 유지 보수성을 향상시킬 수 있습니다.

  2. 이름 충돌 방지: 다양한 라이브러리나 프레임워크를 사용할 때, 동일한 클래스 이름을 가진 클래스가 충돌하지 않도록 Namespace를 사용하여 격리할 수 있습니다.

  3. 코드 재사용: 클래스는 객체 지향 프로그래밍의 핵심 개념으로, 재사용 가능한 코드를 작성하고 유지 관리하기 쉽게 합니다. 클래스를 생성하여 관련된 데이터와 동작을 하나의 단위로 캡슐화할 수 있습니다.

Class 상속 예시 코드

클래스 상속은 기존 클래스의 속성과 동작을 그대로 물려받아 새로운 클래스를 정의하는 개념입니다. 아래는 클래스 상속과 관련된 코드 예시와 주석 설명입니다.

class Animal
{
    protected $name;

    public function __construct($name)
    {
        $this->name = $name;
   

 }

    public function eat()
    {
        echo $this->name . " is eating.";
    }
}

class Dog extends Animal
{
    public function bark()
    {
        echo "Woof!";
    }
}

$dog = new Dog("Bobby");
$dog->eat(); // Animal 클래스의 eat() 메서드를 상속받아 사용
$dog->bark(); // Dog 클래스의 bark() 메서드를 호출

위의 예시 코드에서 Animal 클래스는 기본적인 동물의 속성과 동작을 정의하고, Dog 클래스는 Animal 클래스를 상속받아 확장합니다. Dog 클래스에는 bark() 메서드가 추가되어 있습니다.

$dog 객체를 생성한 후에는 Animal 클래스에서 상속받은 eat() 메서드와 Dog 클래스에서 정의한 bark() 메서드를 호출할 수 있습니다. 상속을 통해 코드 재사용성과 유연성을 높일 수 있습니다.