Language/php
[생활코딩] 17.10 클래스 로딩
migrationArc
2021. 6. 8. 14:35
생활코딩 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 를 사용해도 된다.
이 글의 모든 사진과 내용의 출처는 생활코딩에 있음을 알려드립니다.
생활코딩 - PHP 기본 A 부터 Z 까지 - 인프런 | 학습 페이지
지식을 나누면 반드시 나에게 돌아옵니다. 인프런을 통해 나의 지식에 가치를 부여하세요....
www.inflearn.com