Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- dfs
- graph
- udemy
- 백준
- web
- Python
- Cleancode
- 인프런
- BOJ
- 정수론
- C언어
- 따배씨
- BFS
- programmers
- 따라하면서 배우는 C언어
- BASIC
- greedy
- JavaScript
- 종만북
- DP
- 생활코딩
- String
- Algospot
- server
- php
- Algorithm
- C
- sorting
- Math
- 따라하며 배우는 C언어
Archives
- Today
- Total
몽상실현개발주의
[생활코딩] 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 를 사용해도 된다.
이 글의 모든 사진과 내용의 출처는 생활코딩에 있음을 알려드립니다.
'Language > php' 카테고리의 다른 글
[생활코딩] 17.12 컴포저 (composer) (0) | 2021.06.08 |
---|---|
[생활코딩] 17.11 네임스페이스 (0) | 2021.06.08 |
[생활코딩] 17.9 클래스 멤버 만들기 (static) (0) | 2021.06.08 |
[생활코딩] 17.8 상속 기본 (inheritance) (0) | 2021.06.06 |
[생활코딩] 17.7 접근 제어자 (access modifier) (0) | 2021.06.06 |
Comments