나무위키 처럼 새로운 정보가 생기면 수시로 업데이트될 예정

마지막으로 업데이트 날짜 : 2023-02-09




php 함수 및 설명


echo

<?php  
echo '여기는 콘솔 로그 창이랑 같다고 생각하면 된다';
?>

//console.log 랑 비슷하게 사용하는 echo 이다.
<?php
echo '여기는 두번째 콘솔 창입니다';
?>

//console.log 랑 비슷하게 사용하는 echo 이다.

<?php
$foo = 'bbb';
$second = 'joe';
echo $second.$foo;
echo "<p>";
echo "</p>";
echo $second.$foo;
?>

//console.log 로 2개이상의 값을 연결해서 출력할려고 할때
//사용하는 echo 방식이다.

줄바꿈

<?php 
$z = 10;
$x = 12;
$add = $z+$x;
$miners = $z-$x;
$multiple = $z*$x;
$divide = $z/$x;

echo $add;
echo "<p>";
echo "</p>";
echo $miners;
echo "</p>";
echo $multiple;
echo "</p>";
echo $divide;
echo "</p>";
        ?>
 // echo 를 사용하되 나오 결과값을 줄바꿈을 하고싶을때
 //사용하는게 <p> 태그이다.

.=

<?php
$a = "Hi";
$a .=" there!";
echo $a;
?>
// 문자열일 경위 위처럼 사용해서 적으면 하나의 문장으로 나온다.

다른 메소드로 사용하던 += 가 php 에서는 .= 로 바뀐거라고 생각하면 된다.


if문

<?php
echo "<p>";
echo "</p>";

$a = 20;
$b = 10;

if($a>$b){
    echo "a 가 b보다 크다";
}else{
    echo "b 가 a보다 크다";
}
// php로 if문을 사용하는 양식이다.

do while

<?php
echo "<p>";
echo "</p>";

$i = 10;
do{
    echo $i;
}while($i>10)

?>
php 로 do while 문을 사용하는 양식이다.

for문

<?php
echo "<p>";
echo "</p>";


for ($i = 1; $i <= 10; $i++) {
    echo $i;
}
?>
// 반복문을 통해서 i의 모든값을 나열하고 싶을때 사용한다.
결과값 : 12345678910

array_push (push함수)

<?php
echo "<p>";
echo "</p>";

$arr_first = [1,2,3,4,5,];

array_push($arr_first, "123456");
print_r($arr_first);
// 배열의 모든 값을 각각 확인하고 싶을때 사용한다.
// 결과값 : Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 123456 )

?>

배열의 길이

<?php
echo "<p>";
echo "</p>";
$testArr = array(1,2,3);
echo "배열의 길이는";
echo count($testArr);
echo "입니다."
// 배열의 길이를 알고싶을때 사용한다.
// 결과값 : 3

?>

전역변수

<?php
$a = 1;

function test()
{
    global $a;
    return $a;
} 

var_dump( $a );		// int(1)
var_dump( test() );	// int(1)
?>

php 에서는 다음과 같이 전역변수를 선언해주지 않으면 전역변수로 사용을 할수가 없다.


파일로 저장

file_put_contents(파일명, 파일 내용)

과 같은 형태로
내가 원하는 데이터나 값을 파일로 저장할 수도 있다.

$myinfo = [1,2,3,4,5]
file_pup_contents($file,json_encode($myinfo),true)

그리고 위에 블럭처럼 사용도 가능하다.


explode

explode 는 자바스크립트에서 사용하던 split() 과 똑같은 매서드 이다.

php5.3 버전까지는 split이 사용이 가능했지만 7.0 버전 이후 부터는 아예 삭제가 되어 split 처럼 문자열을 나누기 위해서는 explode 를 사용하면 된다.

<? 
// 예제 1
$pizza  = "조각1 조각2 조각3 조각4 조각5 조각6";
$pieces = explode(" ", $pizza);  // 공백으로 문자열나누기
echo $pieces[0]; // 조각1이 출력됩니다
echo $pieces[1]; // 조각2가 출력됩니다
?>

trait

  • 클래스를 상속을 받을 때에는 하나의 클래스에서 하나의 부모 클래스만 상속이 가능함
    여러개의 클래스를 상속받을 수가 없는데 이를 해결해주고자 사용하는 trait
    선언하는 변수나 함수는 클래스와 같고 class 키워드 자리에 trait로 선언하고 사용하고자 클래스에서는 use로 사용

trait.php

//첫번째 trait를 선언
trait testTrait1
{
public function pr_trait1()
{
print_r( "첫번째 트레이트입니다." );
}
}
 
//두번째 trait를 선언
trait testTrait2
{
public function pr_trait2()
{
print_r( "두번째 트레이트입니다." );
}
}
 

main.php

//trait.php 파일 읽기
require_once ( "trait.php" );
 
class TestTrait
{
//trait.php에 있는 트레이트를 사용선언
use testTrait1;
use testTrait2;
 
//숫자를 더하는 return 함수
public function pr_meclass( $plusNum )
{
$sumNum = $plusNum +100;
return $sumNum ;
}
}
 
//클래스로 인스턴스 생성
$test = new TestTrait();
 
//첫번째 트레이트에 있는 pr_trait1함수 호출
$test -> pr_trait1();
print_r( "<br><br>" );
 
//두번째 트레이트에 있는 pr_trait2함수 호출
$test -> pr_trait2();
print_r( "<br><br>" );
 
//클레스에 있는 pr_class 함수 호출하고 return 받음
print_r( $test -> pr_meclass(100));
 

결과값

첫번째 트레이트입니다.

두번째 트레이트입니다.

200
  • 코드 설명
    클래스에서 다른 클래스를 상속받고자 할 경우에는 하나밖에 상속이 가능하지 않습니다.
    만약 대형 사이트에서 작업을 하고자 할 경우에는 여러개의 파일에 여러개의 함수나 변수를 사용하게 될 텐데 이럴 때 클래스 상속만을 쓰게 된다고 하면 불편하게 됩니다.
    이럴 때 사용하는 것이 trait입니다.
    이 키워드를 사용하면 하나의 클래스에서 여러 트레이트에 선언되어 있는 함수나 변수를 호출 가능하게 됩니다.
    위에서와 같이 testTrait1과 testTrait2를 선언하고 use 키워드를 사용해서 해당 트레이트를 불러왔습니다.
    그리고 인스턴스를 생성한 후에 호출을 하는 테스트를 진행해보면 위와 같은 결과가 나오는 것을 확인하실 수 있습니다.

define()

PHP 문법에는 특정한 값을 대입하여 사용할 수 있는 변수와 상수가 있습니다.
변수는 말 그대로 변할 수 있는 값이며, 상수는 변하지 않는 값입니다.

PHP에서 상수를 정의하는 방법이 define(상수,값,대소문자구분) 함수로 문법은 다음과 같습니다.
define(name, value, case-insensitive)
define(name, value)

보통은 변수를 사용하여 모든 값들을 처리하지만 값이 변경되면 안되는 특별한 고정값을 사용하고 싶을 때 상수로 지정하여 사용하게 됩니다.
자주쓰이는 상수설정 값들은 도메인, 파일위치, 디렉터리 경로, PATH 등 고유값으로 지정되어야 할 값들이 있습니다.

  • 간단한예시

define(DOMINE, 'https://comic.naver.com/')		// 도메인이라는 글자를 호출시 저장해둔 벨류값이 나온다.


echo DOMINE.webtoon/weekday		// 결과값 => https://comic.naver.com/webtoon/weekday


혹은

define(KSH_CUSTOM_DATA, '2023-01-01');

$two_month = date('Y-m-d H:i:s', strtotime(KSH_CUSTOM_DATA.'+3 days'));    
echo $two_month;		/// 결과값 => 2023-01-04

이러한 형태로 사용할 수 있다.
여기서는 상수값이라는걸 좀 표현하기 위해서 대문자로 사용했지만 다르게도 사용할 수 있다.


define(DAEMUNJA, 'AAA');
define(somunja, 'aaa');
define($const_name , '정상수');


echo DAEMUNJA;		/// 결과값 => AAA
echo somunja;		/// 결과값 => aaa
echo $const_name;	/// 결과값 => 아무것도 안나옴

class 멤버의 접근 권한 메서드 3개

public - 어느 장소나 어떤 클래스에서도 접근 가능

protected - 이 클래스를 정의한 자신의 클래스와 자식 클래스에서만 접근 가능

( 인스턴스에는 접근 불가 )

private - 이 클래스를 정의한 클래스 안의 멤버 함수에서만 접근 가능

( 인스턴스 접근 불가 )

주로, 읽기 전용과 쓰기 전용 속성을 만들 때는 protected나 private를 사용해 프로퍼티를 읽고 쓰는 것을 금지합니다.

그이유는 마음대로 프로퍼티 값을 변경할수없기 위함입니다.

그밖에는 public인 메소드를 통해 접근할 수 있게 합니다.


preg_replace

  • 정규식 검색 및 문자열을 정해진 형태로 바꾸는 메소드
<?php
$count = 0;

echo preg_replace(array('/\d/', '/\s/'), '*', 'xp 4 to', -1 , $count);
echo $count; //3
?>

결과값 : 
xp***to
3

위에서 사용한 것 처럼 비밀번호 혹은 글자의 특정부분을 지정한 다른 문자로 변경해줄 일이 있을때 사용


array_merge


<?php
echo "<br>";
$arr1 = array("red","green","blue");
$arr2 = array("white");

$result1 = array_merge($arr1,$arr2);

echo "<br>";
echo "arr_merge의 결과는 ";
print_r($result1);

결과값 : arr_merge의 결과는 Array ( [0] => red [1] => green [2] => blue [3] => white )


?>

array_merge 는 간단하게 말하면 2개의 배열을 합치는 것이다.
이때 array_merge(arr1,arr1,arr2); 를 예로들면 arr1 에 arr2 가 흡수되는
그런 형태라서 결과값을 보면

3번째 인덱스에 white 가 추가되는것을 볼수 있다.


foreach

$arr4 = ["item" => "냉동참치", "가격"=> "10000원", "판매처"=>"스타일씨", "배송비"=>"1000원"];
// print_r($arr4[2]);
echo "<br>";


foreach($arr4 as $value){
    echo "$arr4 의 벨류값은 ";
    print_r($arr4)."<br/>";
}

결과값 :
Array ( [item] => 냉동참치 [가격] => 10000[판매처] => 스타일씨 [배송비] => 1000) Array 의 벨류값은 |줄바꿈| Array ( [item] => 냉동참치 [가격] => 10000[판매처] => 스타일씨 [배송비] => 1000) Array 의 벨류값은 |줄바꿈| Array ( [item] => 냉동참치 [가격] => 10000[판매처] => 스타일씨 [배송비] => 1000) Array 의 벨류값은 |줄바꿈| Array ( [item] => 냉동참치 [가격] => 10000[판매처] => 스타일씨 [배송비] => 1000)
Array ( [0] => red [1] => green [2] => blue [item] => 냉동참치 [가격] => 10000[판매처] => 스타일씨 [배송비] => 1000)

설명은 나중에 적을것


var_dump

$arr1 = array("red","green","blue");
$arr4 = array("white");

$resultMerge = array_merge($arr1,$arr4);
print_r($resultMerge);
echo "<br>";
echo "var dump의 값은 <br>";
var_dump($resultMerge);


결과값 : 

var dump의 값은
array(7) { [0]=> string(3) "red" [1]=> string(5) "green" [2]=> string(4) "blue" ["item"]=> string(12) "냉동참치" ["가격"]=> string(8) "10000원" ["판매처"]=> string(12) "스타일씨" ["배송비"]=> string(7) "1000원" }

arr_merge 한 값을 var_dumb 를 통해서 출력시킨 결과물이다.


function

<?php


function testFn(){
    echo "hi this is 테스트 함수 데스네.";
}

// $fnc = testFn();

echo "<br><br>";
echo "테스트 함수의 값은 <br> ";
echo testFn();
?>

결과값  : 테스트 함수의 값은
hi this is 테스트 함수 데스네.

진짜 간단한 함수 사용을 echo 로 출력해보았다.


형변환 (숫자형, 문자형)

<?php
echo "<br>";


$a = '1';
$a = (int)$a;
$typeA = gettype($a);
echo $a;
echo $typeA;

결과값 : 1integer

1string

자바스크립트

let a = '1';
parseInt(a) = 1

php
$a = '1';
(int)$a = 1

$a = 1;
(string)$a = '1'

자바스크립트에서 사용하던 형변환 방식으로 php 로 적용했을때의 코드 방식이다.


array_push()

array_pop()

<?php
$a = array(1,2,3,4,5);
array_push($a,7);

print_r($a);
echo "<br>";
echo $a[1];

array_pop($a);
echo "<br>";
print_r($a);

결과값 : 
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 7 )
2
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )

흔히들 사용하는 push 와 pop 을 php 에서 사용하는 방식이다.


functions & args

function test2($number1,$number2){ 
    $sum = $number1 + $number2;
    return $sum;
}

$args = test2("123123","이게될까");
echo "test2 의 결과값은 ";
echo $args;

결과값 : test2 의 결과값은 123123

함수에 파라미터값으로 알규먼트를 추가햇을때 나오는 결과값이다.
숫자로 입력했을시에는 덧셈이 잘 되지만 지금처럼 문자형으로 2개를 적었을때는
안되는 모습이다. 이부분은 좀더 학습이 필요할것 같다.


isset

<?php
echo "<br>";
echo "<br>";

$a = array ('test' => 1, 'hello' => NULL, 'pie' => array('a' => 'apple'));

var_dump(isset($a['test']));            // TRUE
var_dump(isset($a['foo']));             // FALSE
var_dump(isset($a['hello']));           // FALSE

// The key 'hello' equals NULL so is considered unset
// If you want to check for NULL key values then try: 
var_dump(array_key_exists('hello', $a)); // TRUE

// Checking deeper array values
var_dump(isset($a['pie']['a']));        // TRUE
var_dump(isset($a['pie']['b']));        // FALSE
var_dump(isset($a['cake']['a']['b']));  // FALSE


?>

isset 메소드는 php 의 내장함수로
변수가 선언이 된건지 아닌지를 판단하여 true false 로 반환하는 메소드 입니다.


empty()

값이 비어있는지 아닌지를 확인하는 매서드
빈 값이면 true를 리턴하고 아니면 false를 리턴한다.


intval

intval은


echo 의 종류?

echo "<pre>"

배열등을 출력할때 보기 좋게 출력하는 echo 이다.



echo '<pre>';

print_r($member);

echo '</pre>';

단순 print_r() 로 진행한다면 줄바꿈 없이 줄줄이 연결된 형태라서 보기가 힘들지만

저렇게 사용하면 우리가 깔끔한 배열의 형태에 키와 벨류값으로 보기 좋게 출력된다.


배열안의 인덱스 값 보기

$dummy_arr = array('이름'=> "php", '날짜'=>'12.02');

echo $dummy_arr['이름'];		/// 결과값 : php

php는 sql문으로 실행한 결과들이 담기는 배열들의 형태가 키와 벨류값의 형태로 되어 나오는것을 자주 볼 수 있다.

이때 내가 원하는 벨류값을 찾고 싶을때는 위에서 사용한것 처럼 해당 변수명에
$변수명['키 이름']
다음과 같은 형태로 사용하면 쉽게 찾을 수 있다.


array_values($변수이름)

배열의 인덱스에 따른 value 값을 알려준다.

위에서 사용한 변수명을 이어서 하자면

$dummy_arr = array('이름'=> "php", '날짜'=>'12.02');
print_r($dummy_arr);		/// 결과값: Array ( [이름] => php [날짜] => 12.02 )

일반적인 형태로 만들 배열값을 출력하기 위해 print_r 을 사용해서 보면 이렇게 나온다.

$dummy_arr= array_values($dummy_arr);
print_r($dummy_arr);		/// 결과값: Array ( [0] => php [1] => 12.02 ) 

하지만 array_values 를 사용해서 중간작업을 한번 더 거치면
지금처럼 기존에 사용하던 키의 이름이 인덱스 번호의 형태로 바뀌는것을 볼 수 있다.


implode

배열을 문자열로 합치는 함수


number_format(숫자에 자동으로 , 생성)

  • 숫자에 , 를 자동으로 찍어주는 메소드이다.
$val = 1000000;

number_format($val);

echo $val		/// 결과값 : 1,000,000

인코딩에 사용되는 메서드들

  • urlencode()

  • rawurlencode()

$test_url = "테스트 중입니다.";
echo "urlencode sample  :::: " . urlencode($test_url);
echo "</br>";
echo "rawurlencode sample  :::: " . rawurlencode($test_url);
결과창

urlencode sample :::: %ED%85%8C%EC%8A%A4%ED%8A%B8+%EC%A4%91%EC%9E%85%EB%8B%88%EB%8B%A4.

rawurlencode sample :::: %ED%85%8C%EC%8A%A4%ED%8A%B8%20%EC%A4%91%EC%9E%85%EB%8B%88%EB%8B%A4.

둘의 차이점은

urlencode는 공백을 + 로 인코딩을하고

rawurlencode는 공백을 %20 으로 인코딩 한다는 차이가 있습니다.


  • iconv()

iconv() 는 문자 인코딩에 주로 사용되는데, 모든 언어 허용으로 가장 많이 사용되는 utf-8 로 변경이 필요할때 사용합니다.

 $test2 = iconv("UTF-8", "EUC-KR", $test);
///utf-8 --> euc-kr로 변경하는 방법입니다.
$test2 = iconv("EUC-KR", "UTF-8", $test);
// 반대로 euc-kr --> utf-8로 변경할 수 있습니다.

mysqli_fetch_object()

mysqli_fetch_object() 함수는 결과 집합의 현재 행을 객체로 반환합니다.


alert_close

이름 그대로 alert 메세지 창만 보여주고 종료하는 메서드이다.

$a = 10;
$b = 20;

if($a<$b){
	alert_close("a가 b보다 작으므로 접근할수 없습니다.")
}


json_encode


구조분해 할당


<?php

$today_date = '2023-01-30' ;

echo "오늘의 날짜는 '"$today_date"' 입니다. "

// 결과값 : "오늘의 날짜는 2023-01-30 입니다."

?>

구조분해할당 하는 상황에서 만약 " " 안에 넣을때에는
위와같이 넣어주면 된다.



23-02-07 내용추가

구조분해할당의 설명으로 적기는 조금 애매모호한 부분이긴 한데
일단 추가할 내용은 " " 이 안에 함수를 넣는 방법이다.

우선 사용하는 방법은 3가지다


$table = 'member'

1. {$table}

2. '$table' 

3. '".$table."'

이렇게 3가지이 방법이 있는데 차이점은 2,3번은 결과가 같고 1번은 다르다른 차이가 있따





<?php


$mb_id ='test_ksh_1';

$member_table_name ='member';



$a = "여기는 1번, 테이블의 이름은 {$member_table_name} 입니다";
$b = "여기는 2번, 테이블의 이름은 '$member_table_name' 입니다";
$c = "여기는 3번, 테이블의 이름은 '".$member_table_name."' 입니다";



echo $a;
echo "<br>";
echo $b;
echo "<br>";
echo $c;
echo "<br>";


?>




--- 실제 결과값 ----

여기는 1, 테이블의 이름은 member 입니다
여기는 2, 테이블의 이름은 'member' 입니다
여기는 3, 테이블의 이름은 'member' 입니다



?>

코드블럭의 결과처럼 2,3번은 결과가 같지만, 1번만 다른것을 알 수 있다.

순서대로 설명하자면

1번은 member 라는 단어가 원래 이 문장에 있던 단어처럼 자연스럽게 연결하는
목적으로 쓰고싶을때 사용된다. 그래서 ' ' 로 감싸서 문자형의 형태라는것만
인식하고 { } 로 묶어서 사용할때는 ' ' 를 빼고 들어간것을 알 수 있다.


2번은 결과에서 알수 있듯 'memeber' 라는 값을 따옴표까지 묶어서 하나로 가져온것을
알 수 있다.


3번은 사실 2번과 같은 목적으로 사용되기 위해 입력된 방식인데,
조금의 차이가 있다면 항상 2번처럼 사용하고 싶어도 가끔 상황에 따라서 2번처럼
사용해도 내가 원하는것과 다르게 나올때가 있는데 그럴때는 3번처럼 적으면
왠만하면 잘 넣어진다.

3번에 대해서 추가적으로 설명을 덧붙이자면


// php
.$member.

지금처럼 양 사이드에 . 을 붙이는건
자바스크립트로 예를 들다면 + 라고 생각하면 되겠다.

const memeber;

+member+ 

자바스크립트 코드로 비유하자면 위와 아래가 같은 의미라고 보면 되겟다.

예시까지 하나 추가해보자면


<?php
$name = 'php';

echo "이 언어어의 이름은 '".$name."'  입니다.";

?>


<javascript>

const name = 'javascript';

console.log("이 언어의 이름은" + name + "입니다.");
console.log(`이 언어의 이름은 + ${name} + 입니다.`);


</javascript>

이렇게 사용한것이라고 할 수 있겟다.



::

범위 확인 연산자

범위 확인 연산자(Paamayim Nekudotayim이라고도 함) 또는 간단히 말해서 이중 콜론은 클래스의 static , constant 및 재정의된 속성 또는 메서드에 액세스할 수 있도록 하는 토큰입니다.

출처 : php 공식문서

사용예시


<?php

class MyClass {
    const CONST_VALUE = '여기는 상수의 값입니다';
}

$classname = 'MyClass';

echo $classname::CONST_VALUE;

echo "<br>";

echo MyClass::CONST_VALUE;


?>
profile
삽질도 100번 하면 요령이 생긴다. 부족한 건 경험으로 채우는 백엔드 개발자

0개의 댓글