몽상실현개발주의

[생활코딩] 17.10 클래스 로딩 본문

Language/php

[생활코딩] 17.10 클래스 로딩

migrationArc 2021. 6. 8. 14:35

[생활코딩] 17.10 클래스 로딩

생활코딩 php 강좌

17. PHP의 객체 지향 프로그래밍

17.10 클래스 로딩

  • class 의 정의부분과 사용부분을 분리해서 class 를 쉽게 사용할 수 있도록 하는 방법
  • 서로 연관된 Object 를 Namespace 로 분류

 

// 01_greeting.php
<?php
class Hi{
    function __construct(){
        echo "Hi";
    }
}
?>
// require_once
<?php
require_once "01_greeting.php";
new Hi();
?>
  • required_once 로 다른 File 에 정의된 Hi class 를 사용 가능
// spl_autoload_register
<?php
function autoloader(){
    var_dump("here");
    require_once "01_greeting.php";
}
spl_autoload_register('autoloader');

new Hi();
//
?>
  • spl_autoload_registe() 함수를 사용하여 require_once 와 같이 다른 File 에 정의된 Hi class 를 사용 가능
  • php 는 class 의 정의가 없을 때, spl_autoload_register() 를 통해 전달된 함수의 이름에 해당되는 함수를 호출하도록 약속 되어 있음
    • autoloader
  • autoloader
    • 존재하지 않는 class 의 정의부 (구현체) 를 자동으로 loading 해 주는 역할을 함

 

 

<?php
function autoloader($path){
    var_dump("path : ($path}");
    require_once "01_greeting.php";
}

spl_autoload_register('autoloader');
new Hi();
?>
  
// string(11) "path : (Hi}" Hi
  • spl_autoload_register() 에 실행될 함수에 특정한 이름을 주고 실행을 시키면, php 는 그 함수의 이름을 기억하고 있음
  • 특정한 class 를 instance 화 하려고 했을때, instance 의 class 가 존재하지 않는다면, php 는 autoloader 의 이름에 해당하는 함수를 호출하면서 첫번째 인자로 호출하는 class 의 이름을 가짐

 

 

// Hi.php
<?php
class Hi
{
    function __construct()
    {
        echo "<h1>Hi</h1>";
    }
}
// Bye.php
<?php
class Bye
{
    function __construct()
    {
        echo "<h1>Bye</h1>";
    }
}
<?php
function autoloader($path){
    $path = $path.'.php';
    var_dump($path);
    require_once $path;
}
spl_autoload_register("autoloader");
new Hi();
new Bye();
?>
  
// string(6) "Hi.php"
// Hi
// string(7) "Bye.php"
// Bye
  • autolader 의 성질을 활용하여, 훨씬더 편리하게 우리가 필요한 코드를 동적으로 loading 할 수 있다.
  • 복잡하다면 require_once 와 같은 동작이니 require_once 를 사용해도 된다.

 

 

 


이 글의 모든 사진과 내용의 출처는 생활코딩에 있음을 알려드립니다.

http://www.inflearn.com/course/%EC%83%9D%ED%99%9C%EC%BD%94%EB%94%A9-php-%EA%B0%95%EC%A2%8C/lecture/230?tab=note

 

생활코딩 - PHP 기본 A 부터 Z 까지 - 인프런 | 학습 페이지

지식을 나누면 반드시 나에게 돌아옵니다. 인프런을 통해 나의 지식에 가치를 부여하세요....

www.inflearn.com

 

 

Comments