Archive for Dev. (junyup2)

지식을 μ±„μ›Œκ°€λŠ” γ€Žκ°œλ°œμž/ν™”μ΄νŠΈν•΄μ»€γ€λ₯Ό λͺ©ν‘œλ‘œ μ •λ¦¬ν•˜λŠ” λΈ”λ‘œκ·Έ

μ›Ή(Web) 개발/PHP

PHP - 클래슀( class() ), μƒμ„±μž( __construct() )

Gearvirus(junyup2) 2023. 11. 13. 17:36

PHP 의  ν΄λž˜μŠ€μ™€ μƒμ„±μžμ— λŒ€ν•˜μ—¬

클래슀 (class)

 

php의 클래슀(class)λŠ” κ°μ²΄μ—μ„œ λ³€μˆ˜μ™€ ν•¨μˆ˜λ₯Ό λ‹΄λŠ” ν‹€

(ν•„μš”ν•œ λ³€μˆ˜μ˜ λͺ©λ‘κ³Ό μ‚¬μš©ν•  ν•¨μˆ˜λ“€)

<?php
    class Study{
        public $var;
        private $var;
        protected $var;
    }
?>

 

  • class 뒀에 이름을 λ„£μ–΄μ„œ 클래슀λ₯Ό μ •μ˜
  • μ—‘μ„ΈμŠ€ ν•œμ •μž (public, private, protected) - μ ‘κ·Ό μ œν•œμž
  • λ©€λ²„λ³€μˆ˜λ‚˜ λ©”μ†Œλ“œκ°€ μ–΄λ””μ—μ„œ μ•‘μ„ΈμŠ€(acess) κ°€λŠ₯ν•œμ§€λ₯Ό μ§€μ •ν•˜λŠ” 것
  • (멀버 λ³€μˆ˜μ˜ μ•žμ— μ•‘μ„ΈμŠ€ ν•œμ •μžλ₯Ό λΆ™μ΄λŠ” κ²ƒμœΌλ‘œ, κ·Έ 멀버 λ³€μˆ˜μ— μ ‘κ·Ό κ°€λŠ₯ λ²”μœ„λ₯Ό 지정)
public : 클래슀 λ‚΄, 클래슀 μ™Έμ˜ μ–΄λ””μ—μ„œλΌλ„ μ•‘μ„ΈμŠ€ κ°€λŠ₯ (아무것도 λͺ…μ‹œλ˜μ§€ μ•ŠμœΌλ©΄ public)
private : 같은 클래슀 μ•ˆμ—μ„œλ§Œ μ•‘μ„ΈμŠ€ κ°€λŠ₯ (클래슀 상속 λΆˆκ°€λŠ₯)
protected : 같은 클래슀 및 μžμ‹ ν΄λž˜μŠ€μ—μ„œ μ•‘μ„ΈμŠ€ κ°€λŠ₯ (클래슀 상속 κ°€λŠ₯)

 

  • γ€Œpublic」 은 기본적으둜 μ—‘μ„ΈμŠ€μ— μ œν•œμ΄ μ μš©λ˜μ§€ μ•ŠμœΌλ―€λ‘œ ν΄λž˜μŠ€μ—μ„œλ„ 클래슀 μ™ΈλΆ€μ—μ„œλ„ μ—‘μ„ΈμŠ€κ°€ ν—ˆμš©λ¨
    • 클래슀 λ‚΄μ˜ λ©”μ†Œλ“œ λ‚΄μ—μ„œ μ°Έμ‘° κ°€λŠ₯
    • ν΄λž˜μŠ€μ—μ„œ 객체 생성 κ°€λŠ₯
    • κ°μ²΄μ—μ„œ 멀버 λ³€μˆ˜μ˜ 값을 νšλ“, λ³€κ²½ κ°€λŠ₯
  • γ€Œprivate」 을 μ§€μ •ν•œ 경우, 같은 클래슀 λ‚΄μ—μ„œ μ•‘μ„ΈμŠ€ ν•  수 μžˆμ§€λ§Œ 클래슀의 μ™ΈλΆ€μ—μ„œ μ•‘μ„ΈμŠ€ ν•  수 μ—†κ²Œ 됨
    • (즉, ν΄λž˜μŠ€μ—μ„œ 객체λ₯Ό μƒμ„±ν•˜κ³  κ·Έ 객체λ₯Ό 톡해 λ©€λ²„λ³€μˆ˜μ˜ 값을 확인할 수 μ—†μŒ)
  • γ€Œprotected」 λ₯Ό μ§€μ •ν•œ 경우, 같은 클래슀 λ‚΄μ—μ„œ, 그리고 ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ μ•‘μ„ΈμŠ€ κ°€λŠ₯
  • (php μƒμ„±μžκ°€ μ‹€ν–‰λœ 후에 속성이 λ³€κ²½λ˜λŠ” 것을 λ°©μ§€ν•˜λ €λ©΄ public λŒ€μ‹  privateλ‚˜ protectedλ₯Ό μ‚¬μš©)
// μ™ΈλΆ€μ—μ„œμ˜ μ•‘μ„ΈμŠ€
$test->public	  // μ•‘μ„ΈμŠ€ κ°€λŠ₯
$test->private	  // μ•‘μ„ΈμŠ€ λΆˆκ°€λŠ₯
$test->protected  // μ•‘μ„ΈμŠ€ λΆˆκ°€λŠ₯

// 클래슀 상속
class Check class Study{
	function __construct(){
    	$this->public	  // μ•‘μ„ΈμŠ€ κ°€λŠ₯
        $this->private	  // μ•‘μ„ΈμŠ€ λΆˆκ°€λŠ₯
        $this->protected  // ν•˜μœ„ ν΄λž˜μŠ€μ΄λ―€λ‘œ μ•‘μ„ΈμŠ€ κ°€λŠ₯
    }
}

 

  • $this λŠ” php λ‚΄μž₯ λ³€μˆ˜λ‘œ, ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λŠ” ν˜„μž¬ μΈμŠ€ν„΄μŠ€λ₯Ό κ°€λ¦¬ν‚€λŠ” νŠΉμˆ˜ν•œ λ³€μˆ˜
    • ($this의 μž‘λ™λ°©μ‹ - 객체λ₯Ό λ§Œλ“€κ³  μ‚¬μš©)
  • 속성(λ˜λŠ” λ©”μ†Œλ“œ)에 μ ‘κ·Όν•˜λ €λ©΄ ν™”μ‚΄ν‘œ(->)λ₯Ό λ„£κ³ , 뒀에 속성λͺ…(λ©”μ†Œλ“œλͺ…)을 λ„£μŒ
  • (λ©”μ†Œλ“œ 호좜 μ‹œμ—λŠ” λ©”μŠ€λ“œ 뒀에 ()κ΄„ν˜Έμ™€ λ‚΄μš©μ„ μ΄μ–΄μ„œ μž‘μ„±)
$var1 = new 객체/μΈμŠ€ν„΄μŠ€
$var2 = new 객체/μΈμŠ€ν„΄μŠ€
  • newλ₯Ό μ‚¬μš©ν•˜λ©΄ μƒˆλ‘œμš΄ 객체λ₯Ό λ°˜ν™˜ν•˜λ―€λ‘œ, 같은 객체/μΈμŠ€ν„΄μŠ€λͺ…을 넣어도 μ„œλ‘œ λ‹€λ₯Έ 객체/μΈμŠ€ν„΄μŠ€κ°€ 됨
static function Test(){
}

 

  • 객체의 μΈμŠ€ν„΄μŠ€λ₯Ό λ§Œλ“€μ§€ μ•Šκ³  php 클래슀λ₯Ό μ‚¬μš©ν•˜λŠ” 경우(정적 λ©”μ†Œλ“œ)
    • function μ•žμ— static을 λΆ™μ—¬μ€Œ

μƒμ„±μž (constructor)

 

php ν΄λž˜μŠ€μ—λŠ” μƒμ„±μžλΌλŠ” 특수 λ©”μ„œλ“œκ°€ 쑴재

객체가 생성될 λ•Œ 싀행이 λ˜λŠ”λ°, 주둜 객체의 μ΄ˆκΈ°ν™”μ— μ“°μž„

class JWT
{
    protected $alg;
    protected $secret_key;

    function __construct()
    {
        $this->alg = 'sha256';
        $this->secret_key = "your secret key";
    }
}

 

  • php __construct 의 μƒμ„±μžμ— 인수 값을 λ„£μ–΄μ£Όλ©΄, 객체 생성 후에도 속성을 λ”°λ‘œ λ§Œλ“€ ν•„μš”κ°€ μ—†μŒ
  • __construct() λ©”μ†Œλ“œλŠ” μΆ”κ°€λœ μΈμˆ˜κ°’μ„ 클래슀 μ†μ„±μœΌλ‘œ ν• λ‹Ήν•˜λ©°, μΈμˆ˜κ°’μ˜ 이름과 μ†μ„±μ˜ 이름은 달라도 상관 μ—†μŒ

μ—λŸ¬ λ°œμƒμ‹œ
class Test{
	public $arr = array();
    
    public function __construct($arr){
    	if(!is_array($arr)){
        	throw new Exception('$arrκ°€ 배열이 μ•„λ‹˜');
        }
        $this->arr = $arr;
    }
    public function chkarr($arr){
    	return in_array($arr, $this -> arr);
    }
}
  • μΈμˆ˜κ°’μœΌλ‘œ λ“€μ–΄μ˜¨ $arrκ°€ 배열이 μ•„λ‹Œ 경우 chkarr() ν˜ΈμΆœμ‹œ μ—λŸ¬κ°€ λ°œμƒν•  수 있음
  • php μƒμ„±μžλŠ” μΈμˆ˜μ— μ–΄λ–€ 값이 λ“€μ–΄μ™€μ„œ λ¬Έμ œκ°€ λ°œμƒν•˜λŠ”μ§€ 확인할 방법이 μ—†μŒ
  • 배열이 μ•„λ‹Œκ°’μ΄ λ“€μ–΄μ˜¨ 경우λ₯Ό μ˜ˆμ™Έ 처리
    • Exception 객체λ₯Ό λ§Œλ“€κ³  throw ꡬ문으둜 phpλ₯Ό 쀑단
  • λ˜λŠ” try / catch λ₯Ό μ΄μš©ν•˜μ—¬ μ½”λ“œλ₯Ό μ€‘λ‹¨μ‹œν‚€μ§€ μ•Šκ³  직접 처리 κ°€λŠ₯
try{
    if(쑰건){
    } catch(Exception $e){
    	 echo $e->getMessage();
    }
}

 

  • php μ—μ„œ μ˜ˆμ™Έκ°€ κ°μ§€λ˜λ©΄ tryλ¬Έμ—μ„œ 쀑단이 되고 catch문으둜 λ„˜μ–΄κ°€μ„œ Exception 객체λ₯Ό μƒμ„±ν•˜κ³  $eλ³€μˆ˜μ— μ €μž₯
  • Exception ν΄λž˜μŠ€κ°€ μƒμ„±λ˜λ©΄ μ—λŸ¬ λ©”μ‹œμ§€κ°€ μ§€μ •λ˜κ³ , catch문의 μ½”λ“œλŠ” getMessage()λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 좜λ ₯

 

 

 

질문 ν™˜μ˜, μˆ˜μ • 및 보완에 λŒ€ν•œ μ§€μ  ν™˜μ˜