마지막으로 업데이트 날짜 : 2023-02-09
<?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 에서는 .= 로 바뀐거라고 생각하면 된다.
<?php
echo "<p>";
echo "</p>";
$a = 20;
$b = 10;
if($a>$b){
echo "a 가 b보다 크다";
}else{
echo "b 가 a보다 크다";
}
// php로 if문을 사용하는 양식이다.
<?php
echo "<p>";
echo "</p>";
$i = 10;
do{
echo $i;
}while($i>10)
?>
php 로 do while 문을 사용하는 양식이다.
<?php
echo "<p>";
echo "</p>";
for ($i = 1; $i <= 10; $i++) {
echo $i;
}
?>
// 반복문을 통해서 i의 모든값을 나열하고 싶을때 사용한다.
결과값 : 12345678910
<?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.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
여러 트레이트에 선언되어 있는 함수나 변수를 호출 가능
하게 됩니다.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; /// 결과값 => 아무것도 안나옴
public - 어느 장소나 어떤 클래스에서도 접근 가능
protected - 이 클래스를 정의한 자신의 클래스와 자식 클래스에서만 접근 가능
( 인스턴스에는 접근 불가 )
private - 이 클래스를 정의한 클래스 안의 멤버 함수에서만 접근 가능
( 인스턴스 접근 불가 )
주로, 읽기 전용과 쓰기 전용 속성을 만들 때는 protected나 private를 사용해 프로퍼티를 읽고 쓰는 것을 금지합니다.
그이유는 마음대로 프로퍼티 값을 변경할수없기 위함입니다.
그밖에는 public인 메소드를 통해 접근할 수 있게 합니다.
<?php
$count = 0;
echo preg_replace(array('/\d/', '/\s/'), '*', 'xp 4 to', -1 , $count);
echo $count; //3
?>
결과값 :
xp***to
3
위에서 사용한 것 처럼 비밀번호 혹은 글자의 특정부분을 지정한 다른 문자로 변경해줄 일이 있을때 사용
<?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(arr2); 를 예로들면 arr1 에 arr2 가 흡수되는
그런 형태라서 결과값을 보면
3번째 인덱스에 white 가 추가되는것을 볼수 있다.
$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원 )
설명은 나중에 적을것
$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 를 통해서 출력시킨 결과물이다.
<?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 로 적용했을때의 코드 방식이다.
<?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 에서 사용하는 방식이다.
function test2($number1,$number2){
$sum = $number1 + $number2;
return $sum;
}
$args = test2("123123","이게될까");
echo "test2 의 결과값은 ";
echo $args;
결과값 : test2 의 결과값은 123123
함수에 파라미터값으로 알규먼트를 추가햇을때 나오는 결과값이다.
숫자로 입력했을시에는 덧셈이 잘 되지만 지금처럼 문자형으로 2개를 적었을때는
안되는 모습이다. 이부분은 좀더 학습이 필요할것 같다.
<?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 로 반환하는 메소드 입니다.
값이 비어있는지 아닌지를 확인하는 매서드
빈 값이면 true를 리턴하고 아니면 false를 리턴한다.
intval은
echo "<pre>"
배열등을 출력할때 보기 좋게 출력하는 echo 이다.
echo '<pre>';
print_r($member);
echo '</pre>';
단순 print_r() 로 진행한다면 줄바꿈 없이 줄줄이 연결된 형태라서 보기가 힘들지만
저렇게 사용하면 우리가 깔끔한 배열의 형태에 키와 벨류값으로 보기 좋게 출력된다.
$dummy_arr = array('이름'=> "php", '날짜'=>'12.02');
echo $dummy_arr['이름']; /// 결과값 : php
php는 sql문으로 실행한 결과들이 담기는 배열들의 형태가 키와 벨류값의 형태로 되어 나오는것을 자주 볼 수 있다.
이때 내가 원하는 벨류값을 찾고 싶을때는 위에서 사용한것 처럼 해당 변수명에
$변수명['키 이름']
다음과 같은 형태로 사용하면 쉽게 찾을 수 있다.
배열의 인덱스에 따른 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 를 사용해서 중간작업을 한번 더 거치면
지금처럼 기존에 사용하던 키의 이름이 인덱스 번호의 형태로 바뀌는것을 볼 수 있다.
배열을 문자열로 합치는 함수
,
를 자동으로 찍어주는 메소드이다.$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() 는 문자 인코딩에 주로 사용되는데, 모든 언어 허용으로 가장 많이 사용되는 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() 함수는 결과 집합의 현재 행을 객체로 반환합니다.
이름 그대로 alert 메세지 창만 보여주고 종료하는 메서드이다.
$a = 10;
$b = 20;
if($a<$b){
alert_close("a가 b보다 작으므로 접근할수 없습니다.")
}
<?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;
?>