php date 날짜 관련 함수



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>성공</title>


<style>

#main{
border: black 1px solid;
}
#calendar{
border: black 1px solid;
}

th,tr,td{
border: black 1px solid;
}

</style>
</head>
<body>
<h1 align="center">달력 만들기 - 부제 코딩 습관</h1>

<h4>1. defaults 로 설정되어있는 현재 시간. 객체다</h4>

<?php $date = new DateTime(); print_r($date); ?> <br>

<?php echo $date->date; ?> <br>

<?php echo $date->getTimestamp(); ?> <br>



<h4>2. int time ( void ) 함수 1970년 1월 1일 0시 0분 0초부터 지금까지 지나온 초를 정수형태로 리턴</h4>

<?php

$now_titmestamp = time();

echo $now_titmestamp;

?>

<h4>3. date()는 time()으로 구해진 타임스탬프를 읽기 좋게 포멧팅</h4>

<?php

$now_titmestamp = time();

echo date("Y-m-d h:i:s",$now_titmestamp);

?>


<h4>4. mktime()은 날짜정보를 입력해서 타임스탬프를 구할 수 있는 함수</h4>

<?php
$sec = mktime(0, 0, 0, 9, 1, 2017);
echo '1970년 1월 1일 0시 0분 0초부터 9월 1일 까지의 초:'.$sec;
echo '<br>';

$sec = mktime(0, 0, 0, 9, 1, 2017);
$yoil=date("D",$sec);
echo '9월 첫째 요일:'.$yoil;
echo '<br>';

$sec = mktime(0, 0, 0, 9, 1, 2017);
$firstyouil=date("j",$sec);
echo '9월 첫째 날짜:'.$firstyouil;
echo '<br>';

$sec = mktime(0, 0, 0, 9, 1, 2017);
$lastday=date("t",$sec);
echo '9월 마지막 날짜:'.$lastday;
echo '<br>';


$sec = mktime(0, 0, 0, 9, $lastday, 2017);
$lastyouil=date("D",$sec);
echo '9월 마지막 날짜 요일:'.$lastyouil;
echo '<br>';


$now_time = time();
$month=date("n",$now_time);
echo '이번달은'.$month.'월입니다';
echo '<br>';

$now_time = time();
$week=date("W",$now_time);
echo '이번주는'.$week.'번째 주입니다';
echo '<br>';

//0 (for Sunday) through 6 (for Saturday)
$now_time = time();
$todayyoil=date("w",$now_time);
echo '오늘은'.$todayyoil.'요일 입니다';
echo '<br>';


$daily = array('일','월','화','수','목','금','토');
$date5 = date('w'); //0 ~ 6 숫자 반환
echo $daily[$date5];

?><br>






<h4>5. 날짜 설정하기</h4>

<?php $date = new DateTime('tomorrow'); print_r($date); ?> <br>

<?php $date = new DateTime('March 24,2013'); print_r($date); ?> <br>



<h4>6. 날짜 비교하기1</h4>

<?php
$one = new DateTime('tomorrow');
$two = new DateTime('March 24,2013');

if($one > $two)
{
echo "one 이 two 보다 큽니다 <br>";
}

$diff = $one -> diff($two); print_r($diff);
?><br>



<h4>7. 날짜 비교하기2</h4>

<?php
$date1=date_create("2013-01-01");
$date2=date_create("2013-02-10");
$diff=date_diff($date1,$date2);

// %a outputs the total number of days
echo $diff->format("총 날짜: %a.");
echo "<br>";

// %R outputs + beacause $date2 is after $date1 (a positive interval)
echo $diff->format("총날짜: %R%a.");
echo "<br>";

// %d outputs the number of days that is not already covered by the month
echo $diff->format("Month: %m, days: %d.");
?>

<br>


<h4>8. 요일 구하기</h4>

<?php
$daily = array('일','월','화','수','목','금','토');
$date = date('w'); //0 ~ 6 숫자 반환
echo $daily[$date];
?>


<h4>9. 타임존</h4>

<?php $date3 = new DateTime('now', new DateTimeZone('Asia/Seoul')); print_r($date3); ?><br>
<?php echo $date3->format("Y-m-d H:i"); ?><br>


<?php $date3 = new DateTime('yesterday'); echo '어제 날짜:'.$date3->format("Y-m-d");?><br>
<?php echo '오늘 날짜:'.$date3->format("Y-m-d"); ?><br>
<?php $date3 = new DateTime('tomorrow'); echo '내일 날짜:'.$date3->format("Y-m-d");?>




<h4>10. dateperiod 사용하기</h4>
<?php $period = new dateperiod($two , new DateInterval('P3D'), $one);

foreach($period as $datetime){

printf('<li>%s</li>',$datetime ->format('Y-m-d'));
}

?>
<?php

$yoyill = array("일","월","화","수","목","금","토");

?>


<div id="main">
<div id="top" align="center">
<span> 2017-9-22</span>
</div>


<div id="content" align="center">
<table id="calendar">
<tr>
<?php
$daily = array('일','월','화','수','목','금','토');
$today_yoil = date('w'); //0 ~ 6 숫자 반환
for($i=0;$i<7;$i++){
?>

<th> <?php echo $daily[$i]; ?></th>
<?php
}
?>

</tr>
<!-- 요일 부분 끝 -->


<?php //줄
for($i1=0; $i1<5;$i1++){
?>
<tr>

<?php //칸

for($i2=0;$i2<7;$i2++){

//if(){
?>
<td><?php echo $i2; ?></td>

<?php
//}
}
?>

</tr>
<?php
}
?>
</table>

</div>

</div>


<?php //9월 1일 부터 30일
$daily = array('일','월','화','수','목','금','토');
$sec = mktime(0, 0, 0, 9, 1, 2017);
$firstday=date("j",$sec); //1
$lastday=date("t",$sec); //30
$firstyoil=date("w",$sec); //5 //금
?>

<div id="content" align="center">
<table id="calendar">
<tr>
<?php
$daily_ = array('일','월','화','수','목','금','토');
$today_yoil = date('w'); //0 ~ 6 숫자 반환
for($i=0;$i<7;$i++){
?>

<th> <?php echo $daily_[$i]; ?></th>
<?php
}
?>

</tr>
</table>

<table>
<?php
// 요일 부분 끝

echo '<tr>';
for($firstday;$firstday<$lastday+1;$firstday++){



echo $firstday.' : ' ; // 1
$sec_yoil = mktime(0, 0, 0, 9, $firstday, 2017);
$yoil=date("w",$sec_yoil);
echo $daily[$yoil].'<br>'; //5
};


?>
</table>


</div>

</body>
</html>


객체에 관한 이야기


#정리내용

-객체를 이용해 코드 조직하기

-클래스와 메서드와 속성 정의

-new 지시자로 객체 생성하기

-화살표 지시자로 메서드와 속성에 접근하기

-정적 메서드 정의와 호출

-생성자로 객체 초기화하기

-예외를 발생시켜 문제점 알아내기

-예외를 포착해 문제 처리하기

-클래스를 하위클래스로 확장하기

-가시성을 변경해 속성과 메서드에 접근하는 권한 제어하기

- 네임스페이스로 코드 조직하기



-객체를 이용해 코드 조직하기

클래스메서 속성 정의

<?php

class Entree {
public $name;
public $ingredients = array();

public function hasIngredient($ingredient) {
return in_array($ingredient, $this->ingredients);
}
}



// 객체를 생성하고 $soup에 할당
$soup = new Entree;
// $soup 속성 설정
$soup->name = '닭고기 수프';
$soup->ingredients = array('닭고기', '물');

// 또 다른 인스턴스를 생성하고 $sandwich에 할당
$sandwich = new Entree;
// $sandwich 속성 설정
$sandwich->name = '닭고기 샌드위치';
$sandwich->ingredients = array('닭고기', '빵');


foreach (['닭고기','레몬','빵','물'] as $ing) {
if ($soup->hasIngredient($ing)) {
print "수프의 재료: $ing.\n";
}
if ($sandwich->hasIngredient($ing)) {
print "샌드위치의 재료: $ing.\n";
}
}

//결과
수프의 재료: 닭고기. 샌드위치의 재료: 닭고기. 샌드위치의 재료: 빵. 수프의 재료: 물.



-new 지시자로 객체 생성하기

-화살표 지시자로 메서드와 속성에 접근하기



-정적 메서드 정의와 호출

class Entree {
public $name;
public $ingredients = array();

public function hasIngredient($ingredient) {
return in_array($ingredient, $this->ingredients);
}

public static function getSizes() {
return array('소','중','대');
}
}


$sizes = Entree::getSizes();


-생성자로 객체 초기화하기

<?php

class Entree {
public $name;
public $ingredients = array();

public function __construct($name, $ingredients) {
$this->name = $name;
$this->ingredients = $ingredients;
}

public function hasIngredient($ingredient) {
return in_array($ingredient, $this->ingredients);
}
}


// 수프 종류와 재료
$soup = new Entree('닭고기 수프', array('닭고기', '물'));

// 샌드위치 종류와 재료
$sandwich = new Entree('닭고기 샌드위치', array('닭고기', '빵'));



var_dump($soup, $sandwich);


//출력결과
object(Entree)#1 (2) { ["name"]=> string(16) "닭고기 수프" ["ingredients"]=> array(2) { [0]=> string(9) "닭고기" [1]=> string(3) "물" } } object(Entree)#2 (2) { ["name"]=> string(22) "닭고기 샌드위치" ["ingredients"]=> array(2) { [0]=> string(9) "닭고기" [1]=> string(3) "빵" } }



-예외를 발생시켜 문제점 알아내기(생성자로 예외처리)

<?php

class Entree {
public $name;
public $ingredients = array();

public function __construct($name, $ingredients) {
if (! is_array($ingredients)) {
throw new Exception('$ingredients가 배열이 아닙니다.');
}
$this->name = $name;
$this->ingredients = $ingredients;
}

public function hasIngredient($ingredient) {
return in_array($ingredient, $this->ingredients);
}
}


$drink = new Entree('우유 한 잔', '우유');
if ($drink->hasIngredient('우유')) {
print "맛있어!";
}

//결과
PHP Fatal error: Uncaught Exception: $ingredients가 배열이 아닙니다. in {{d}}construct-exception.php:9 Stack trace: #0 {{d}}exception-use.php(2): Entree->__construct('우유 한 잔', '우유') #1 {main} thrown in {{d}}construct-exception.php on line 9





try {
$drink = new Entree('우유 한 잔', '우유');
if ($drink->hasIngredient('우유')) {
print "맛있어!";
}
} catch (Exception $e) {
print "음료를 준비할 수 없습니다: " . $e->getMessage();
}

//결과






-예외를 포착해 문제 처리하기




-클래스를 하위클래스로 확장하기

<?php

class Entree {
public $name;
public $ingredients = array();

public function __construct($name, $ingredients) {
if (! is_array($ingredients)) {
throw new Exception('$ingredients must be an array');
}
$this->name = $name;
$this->ingredients = $ingredients;
}

public function hasIngredient($ingredient) {
return in_array($ingredient, $this->ingredients);
}
}



class ComboMeal extends Entree {

public function hasIngredient($ingredient) {
foreach ($this->ingredients as $entree) {
if ($entree->hasIngredient($ingredient)) {
return true;
}
}
return false;
}
}




// 수프 종류와 재료
$soup = new Entree('닭고기 수프', array('닭고기', '물'));

// 샌드위치 종류와 재료
$sandwich = new Entree('닭고기 샌드위치', array('닭고기', '빵'));






class ComboMeal extends Entree {

public function __construct($name, $entrees) {
parent::__construct($name, $entrees);
foreach ($entrees as $entree) {
if (! $entree instanceof Entree) {
throw new Exception('$entrees의 원소는 객체여야 합니다.');
}
}
}

public function hasIngredient($ingredient) {
foreach ($this->ingredients as $entree) {
if ($entree->hasIngredient($ingredient)) {
return true;
}
}
return false;
}
}



// 세트 메뉴
$combo = new ComboMeal('수프 + 샌드위치', array($soup, $sandwich));

foreach (['닭고기','물','피클'] as $ing) {
if ($combo->hasIngredient($ing)) {
print "세트 메뉴에 들어가는 재료: $ing.\n";
}
}


//결과
세트 메뉴에 들어가는 재료: 닭고기. 세트 메뉴에 들어가는 재료: 물.



-가시성을 변경해 속성과 메서드에 접근하는 권한 제어하기

<?php

class Entree {
private $name;
protected $ingredients = array();
/* $name이 private이므로 접근 수단이 필요하다. */
public function getName() {
return $this->name;
}

public function __construct($name, $ingredients) {
if (! is_array($ingredients)) {
throw new Exception('$ingredients가 배열이 아닙니다.');
}
$this->name = $name;
$this->ingredients = $ingredients;
}

public function hasIngredient($ingredient) {
return in_array($ingredient, $this->ingredients);
}
}


- 네임스페이스로 코드 조직하기


함수에 관해서

#정리할 내용

- 프로그램에서 함수를 정의하고 호출하기

- 필수 인수가 있는 함수 정의하기

- 선택적 인수가 있는 함수 정의하기

- 함수에서 값 반환하기

- 변수 영역에 대한 이해

- 함수 내부에서 전역 변수 사용하기

- 형 선언에 대한 이해

- 인수 형 선언 사용하기

- 반환 형 선언 사용하기

- PHP 코드를 여러 파일에 나눠 관리하기




#코드 정리


- 프로그램에서 함수를 정의하고 호출하기

0

<?php
function page_header() {
print '<html><head><title>저의 홈페이지에 오신 것을 환영합니다.</title></head>';
print '<body bgcolor="#ffffff">';
}

page_header();
print "어서오세요, $user 님.";
page_footer();

function page_footer() {
print '<hr>방문해주셔서 감사합니다.';
print '</body></html>';
}


1

<?php
function countdown($top) {
while ($top > 0) {
print "$top..";
$top--;
}
print "펑!\n";
}

$counter = 5;
countdown($counter);
print "counter의 값: $counter";

//출력

5..4..3..2..1..펑! counter의 값: 5


2

<?php
function page_header2($color) {
print '<html><head><title>저의 홈페이지에 오신 것을 환영합니다.</title></head>';
print '<body bgcolor="#' . $color . '">';
}

page_header2('cc00cc');


3

<?php
function page_header4($color, $title) {
print '<html><head><title>' . $title . '에 오신 것을 환영합니다.</title></head>';
print '<body bgcolor="#' . $color . '">';
}

page_header4('66cc66','저의 홈페이지');



- 필수 인수가 있는 함수 정의하기

<?php
function countdown(int $top) {
while ($top > 0) {
print "$top..";
$top--;
}
print "펑!\n";
}


//에러가 난다. 인수 값으로 int 만들어가야됨
countdown("grunt");


//오류

PHP Fatal error:  Uncaught TypeError: Argument 1 passed to countdown() must be of the type integer, string given, called in {{d}}decl-error.php on line 2 and defined in {{d}}countdown.php:2

Stack trace:

#0 {{d}}decl-error.php(2): countdown('grunt')

#1 {main}

  thrown in {{d}}countdown.php on line 2



- 선택적 인수가 있는 함수 정의하기

1

<?php
function page_header3($color = 'cc3399') {
print '<html><head><title> 저의 홈페이지에 오신 것을 환영합니다.</title></head>';
print '<body bgcolor="#' . $color . '">';
}


2

<?php
// 선택적 인수가 하나일 때. 마지막 인수여야 한다.
function page_header5($color, $title, $header = '어서오세요') {
print '<html><head><title>' . $title . '에 오신 것을 환영합니다.</title></head>';
print '<body bgcolor="#' . $color . '">';
print "<h1>$header</h1>";
}
// 올바른 호출 방법
page_header5('66cc99','저의 멋진 홈페이지'); // $header의 기본값을 사용한다.
page_header5('66cc99','저의 멋진 홈페이지','홈페이지 최고에요!'); // 기본값을 사용하지 않는다.

// 선택적 인수가 두 개일 때. 마지막 두 인수에 지정해야 한다.
function page_header6($color, $title = '저의 홈페이지', $header = '어서오세요') {
print '<html><head><title>' . $title . '에 오신 것을 환영합니다.</title></head>';
print '<body bgcolor="#' . $color . '">';
print "<h1>$header</h1>";
}
// 올바른 호출 방법
page_header6('66cc99'); // $title과 $header의 기본값을 사용한다.
page_header6('66cc99','저의 멋진 홈페이지 '); // $header의 기본값을 사용한다.
page_header6('66cc99','저의 멋진 홈페이지 ','홈페이지 최고에요!'); // 기본값을 사용하지 않는다.

// 인수가 모두 선택적일 때
function page_header7($color = '336699', $title = '저의 홈페이지', $header = '어서오세요') {
print '<html><head><title>' . $title . '에 오신 것을 환영합니다.</title></head>';
print '<body bgcolor="#' . $color . '">';
print "<h1>$header</h1>";
}

// 올바른 호출 방법
page_header7(); // 모두 기본값을 사용한다.
page_header7('66cc99'); // $title과 $header의 기본값을 사용한다.
page_header7('66cc99','저의 멋진 홈페이지'); // $header의 기본값을 사용한다.
page_header7('66cc99','저의 멋진 홈페이지','홈페이지 최고에요!'); // 기본값을 사용하지 않는다.


- 함수에서 값 반환하기 (:return value 타입을 float로 지정했다)

<?php

function restaurant_check($meal, $tax, $tip): float {
$tax_amount = $meal * ($tax / 100);
$tip_amount = $meal * ($tip / 100);
$total_amount = $meal + $tax_amount + $tip_amount;

return $total_amount;
}

restaurant_check(100,7,20);


- 기본값에 변수를 지정할 수 없다.

$my_color = '#000000';

// 잘못된 구문. 기본값에 변수를 지정할 수 없다.
function page_header_bad($color = $my_color) {
print '<html><head><title>저의 홈페이지에 오신 것을 환영합니다.</title></head>';
print '<body bgcolor="#' . $color . '">';
}


- 변수 영역에 대한 이

0

<?php
$dinner = '갑오징어 카레';

function vegetarian_dinner() {
print "저녁 메뉴는 $dinner, 또는 ";
$dinner = '완두싹 볶음';
print $dinner;
print "입니다.\n";
}

function kosher_dinner() {
print "저녁 메뉴는 $dinner, 또는 ";
$dinner = '궁보계정';
print $dinner;
print "입니다.\n";
}

print "채식주의식 ";
vegetarian_dinner();
print "유태인식 ";
kosher_dinner();
print "일반 저녁 메뉴는 $dinner 입니다.";

//출력
채식주의식 저녁 메뉴는 , 또는 완두싹 볶음입니다. 유태인식 저녁 메뉴는 , 또는 궁보계정입니다. 일반 저녁 메뉴는 갑오징어 카레 입니다.


1

<?php
$dinner = '갑오징어 카레';

function vegetarian_dinner() {
global $dinner;
print "저녁 메뉴는 $dinner 였습니다만, 지금은 ";
$dinner = '완두싹 볶음';
print $dinner;
print "입니다.\n";
}

print "일반 저녁 메뉴는 $dinner 입니다.\n";
vegetarian_dinner();
print "일반 저녁 메뉴는 $dinner 입니다.";

//
일반 저녁 메뉴는 갑오징어 카레 입니다. 저녁 메뉴는 갑오징어 카레 였습니다만, 지금은 완두싹 볶음입니다. 일반 저녁 메뉴는 완두싹 볶음 입니다.


- 함수 내부에서 전역 변수 사용하기

0

<?php
$dinner = '갑오징어 카레';

function macrobiotic_dinner() {
$dinner = "모듬 채소";
print "저녁 메뉴는 $dinner 입니다.";
// 해산물의 유혹에 굴복하고 말았음
print " 하지만 저는 ";
print $GLOBALS['dinner'];
print "를 먹겠어요.\n";
}

macrobiotic_dinner();
print "일반 저녁 메뉴: $dinner";

//
저녁 메뉴는 모듬 채소 입니다. 하지만 저는 갑오징어 카레를 먹겠어요. 일반 저녁 메뉴: 갑오징어 카레


1

<?php
$dinner = '갑오징어 카레';

function hungry_dinner() {
$GLOBALS['dinner'] .= ' 그리고 바싹 익힌 토란';
}

print "일반 저녁 메뉴는 $dinner 입니다.";
print "\n";
hungry_dinner();
print "저녁 특선 메뉴는 $dinner 입니다.";

//출력
일반 저녁 메뉴는 갑오징어 카레 입니다. 저녁 특선 메뉴는 갑오징어 카레 그리고 바싹 익힌 토란 입니다.


- 형 선언에 대한 이해 / int로 형선언

<?php
function countdown(int $top) {
while ($top > 0) {
print "$top..";
$top--;
}
print "펑!\n";
}


//에러가 난다. 인수 값으로 int 만들어가야됨
countdown("grunt");



- 반환 형 선언 사용하기

<?php

function restaurant_check($meal, $tax, $tip): float {
$tax_amount = $meal * ($tax / 100);
$tip_amount = $meal * ($tip / 100);
$total_amount = $meal + $tax_amount + $tip_amount;

return $total_amount;
}

restaurant_check(100,7,20);


- 반복문과 함수 같이 사용하기


<?php
function restaurant_check($meal, $tax, $tip) {
$tax_amount = $meal * ($tax / 100);
$tip_amount = $meal * ($tip / 100);
return $meal + $tax_amount + $tip_amount;
}

$cash_on_hand = 31;
$meal = 25;
$tax = 10;
$tip = 10;

while(($cost = restaurant_check($meal,$tax,$tip)) < $cash_on_hand) {
$tip++;
print "팁으로 $tip% ($cost) 정도는 낼 수 있지\n";
}
?>

//팁으로 11% (30) 정도는 낼 수 있지
팁으로 12% (30.25) 정도는 낼 수 있지 팁으로 13% (30.5) 정도는 낼 수 있지 팁으로 14% (30.75) 정도는 낼 수 있지


- 함수와 if문

0

<?php
// 음식가격은 $15.22, 부가세는 8.25%, 팁은 15%일 때 총금액 구하기
$total = restaurant_check(15.22, 8.25, 15);

print '수중에 현금이 총 $20이니까...';
if ($total > 20) {
print "신용카드로 결제해야 돼.";
} else {
print "현금으로 낼 수 있어.";
}
//결과
//수중에 현금이 총 $20이니까...현금으로 낼 수 있어.



1

<?php
function complete_bill($meal, $tax, $tip, $cash_on_hand) {
$tax_amount = $meal * ($tax / 100);
$tip_amount = $meal * ($tip / 100);
$total_amount = $meal + $tax_amount + $tip_amount;
if ($total_amount > $cash_on_hand) {
// 계산금액이 가진돈보다 많음
return false;
} else {
// 이정도는 낼 수 있음
return $total_amount;
}
}

if ($total = complete_bill(15.22, 8.25, 15, 20)) {
print "$total 정도면 딱 좋지.";
} else {
print "제가 돈이 없어서 그러는데, 대신 접시라도 닦으면 안될까요?";
}

//결과
18.75865 정도면 딱 좋지.



- 함수와 배열 (리턴값으로 배열을 사용할수 있다.)

<?php
function restaurant_check2($meal, $tax, $tip) {
$tax_amount = $meal * ($tax / 100);
$tip_amount = $meal * ($tip / 100);
$total_notip = $meal + $tax_amount;
$total_tip = $meal + $tax_amount + $tip_amount;

return array($total_notip, $total_tip);
}


$totals = restaurant_check2(15.22, 8.25, 15);

if ($totals[0] < 20) {
print '팁을 제외한 총금액이 $20보다 적음.';
}

if ($totals[1] < 20) {
print '팁을 포함한 총금액이 $20보다 적음.';
}

//결과
팁을 제외한 총금액이 $20보다 적음.팁을 포함한 총금액이 $20보다 적음.


- 배열의 리턴값을 또다른 함수의 인자 값으로 넣을 수 있다.

0

function restaurant_check($meal, $tax, $tip) {
$tax_amount = $meal * ($tax / 100);
$tip_amount = $meal * ($tip / 100);
$total_amount = $meal + $tax_amount + $tip_amount;

return $total_amount;
}


function payment_method($cash_on_hand, $amount) {
if ($amount > $cash_on_hand) {
return '신용카드';
} else {
return '현금';
}
}

$total = restaurant_check(15.22, 8.25, 15);

$method = payment_method(20, $total);
print '결제 방법은 ' . $method . '입니다';

//결과
결제 방법은 현금입니다



if (restaurant_check(15.22, 8.25, 15) < 20) {
print '$20가 안되니, 현금으로 내야지.';
} else {
print '너무 비싼데, 신용카드를 써야겠어.';
}

//결과
$20가 안되니, 현금으로 내야지.


1

function can_pay_cash($cash_on_hand, $amount) {
if ($amount > $cash_on_hand) {
return false;
} else {
return true;
}
}

$total = restaurant_check(15.22,8.25,15);
if (can_pay_cash(20, $total)) {
print "현금으로 낼 수 있어.";
} else {
print "신용카드를 써야겠네.";
}
//결과
현금으로 낼 수 있어.


- PHP 코드를 여러 파일에 나눠 관리하기

restaurant-functions.php

<?php

function restaurant_check($meal, $tax, $tip) {
$tax_amount = $meal * ($tax / 100);
$tip_amount = $meal * ($tip / 100);
$total_amount = $meal + $tax_amount + $tip_amount;

return $total_amount;
}

function payment_method($cash_on_hand, $amount) {
if ($amount > $cash_on_hand) {
return '신용카드';
} else {
return '현금';
}
}

?>


restaurant-use-funcs.php

<?php

require 'restaurant-functions.php';

/* 음식가격 $25, 더하기 부가세 8.875%, 더하기 팁 20% */
$total_bill = restaurant_check(25, 8.875, 20);

/* 가진돈 $30 */
$cash = 30;

print "결제 방법은 " . payment_method($cash, $total_bill);

//결과

결제 방법은 신용카드


출처: 한빛 미디어 Learning php 정리

데이터 집합 - 배열다루기



-배열의 구성요소: 원소, 키, 값

-배열을 정의하는 두가지 방법: array() 와 단축문법

-대괄호로 배열에 원소 추가하기

-숫자 키 배열에 쓸 수 있는 단축 표현

-배열의 원소 개수 구하기

- foreach()로 배열의 각 원소 확인하기

- foreach()와 클래스명 배열을 이용해 테이블 행의 css 클래스명 번갈아 적용하기

-foreach() 코드 불록 내부에서 배열 원소의 값 수정하기

-for() 루프로 숫자 키 배열의 각 원소 확인하기

-for 와 나머지 연산자(%)를 이용해 테이블 행의 css 클래스명 번갈아 적용하기

-foreach()와 for()를 사용할 때 배열 원소를 확인하는 순서의 차이

-특정 키로 배열 원소 찾기

-특정 값으로 배열 원소 찾기

-문자열 내부에 배열 원소의 값 삽입하기

-배열 원소 제거하기

-implode()로 배열에서 문자열 생성하기

-explode()로 문자열에서 배열 생성하기

-sort(), asort(), ksort()로 배열 정렬하기

-역순으로 배열 정렬하기

-다차원 배열 정의하기

-다처원 배열의 원소에 개별적으로 접근하기

-foreach()와 for() 루프로 다차언 배열의 각 원소 확인하기

-문자열 내부에 다차원 배열 원소 삽입하기



-배열의 구성요소: 원소, 키, 값

-배열을 정의하는 두가지 방법: array() 와 단축문법

<?php
$vegetables = array('corn' => '노랑',
'beet' => '빨강',
'carrot' => '주황');

$dinner = array(0 => '스위트콘과 아스파라거스',
1 => '레몬 치킨',
2 => '삶은 망태버섯');

$computers = array('nintendo-64' => '닌텐도',
2600 => '아타리',
'Saturn' => '세가');

?>



<?php
$vegetables = ['corn' => '노랑', 'beet' => '빨강', 'carrot' => '주황'];

$dinner = [0 => '스위트콘과 아스파라거스',
1 => '레몬 치킨',
2 => '삶은 망태버섯'];

$computers = ['nintendo-64' => '닌텐도', 2600 => '아타리', 'Saturn' => '세가'];



-대괄호로 배열에 원소 추가하기

<?php
// 문자열 키를 사용하는 $vegetables 배열
$vegetables['corn'] = '노랑';
$vegetables['beet'] = '빨강';
$vegetables['carrot'] = '주황';

// 숫자 키를 사용하는 $dinner 배열
$dinner[0] = '스위트콘과 아스파라거스';
$dinner[1] = '레몬 치킨';
$dinner[2] = '삶은 망태버섯';

// 숫자 키와 문자열 키를 사용하는 $computers 배열
$computers['nintendo-64'] = '닌텐도';
$computers[2600] = '아타리';
$computers['Saturn'] = '세가';


-숫자 키 배열에 쓸 수 있는 단축 표현

-배열의 원소 개수 구하기

<?php
$letters[0] = 'A';
$letters[1] = 'B';
$letters[3] = 'D';
$letters[2] = 'C';

for ($i = 0, $num_letters = count($letters); $i < $num_letters; $i++) {
print $letters[$i];
}

//ABCD


-implode()로 배열에서 문자열 생성하기

<?php
$letters = array('A','B','C','D');
print implode('',$letters);

//ABCD


<?php
$dimsum = array('닭고기 번','오리발 구이','순무 케이크');
$menu = implode(', ', $dimsum);
print $menu;

//닭고기 번, 오리발 구이, 순무 케이크


<?php
$dimsum = array('닭고기 번','오리발 구이','순무 케이크');
print '<tr><td>' . implode('</td><td>',$dimsum) . '</td></tr>';

//<tr><td>닭고기 번</td><td>오리발 구이</td><td>순무 케이크</td></tr>



-explode()로 문자열에서 배열 생성하기

<?php
$fish = '농어, 잉어, 꼬치고기, 가자미';
$fish_list = explode(', ', $fish);
print "두번째 물고기는 $fish_list[1]입니다.";

//두번째 물고기는 잉어입니다.


- foreach()로 배열의 각 원소 확인하기

1

<?php
$dinner = array('스위트콘과 아스파라거스',
'레몬 치킨',
'삶은 망태버섯');
foreach ($dinner as $dish) {
print "주문 가능 메뉴: $dish\n";

}

//주문 가능 메뉴: 스위트콘과 아스파라거스 //주문 가능 메뉴: 레몬 치킨 //주문 가능 메뉴: 삶은 망태버섯


2-foreach()와 for()를 사용할 때 배열 원소를 확인하는 순서의 차이

<?php
$letters[0] = 'A';
$letters[1] = 'B';
$letters[3] = 'D';
$letters[2] = 'C';

foreach ($letters as $letter) {
print $letter;
}

//foreach는 순서 그대로 출력

//결과 ABDC


- foreach()와 클래스명 배열을 이용해 테이블 행의 css 클래스명 번갈아 적용하기

-for 와 나머지 연산자(%)를 이용해 테이블 행의 css 클래스명 번갈아 적용하기

<?php
$row_styles = array('even','odd');
$dinner = array('스위트콘과 아스파라거스',
'레몬 치킨',
'삶은 망태버섯');
print "<table>\n";

for ($i = 0, $num_dishes = count($dinner); $i < $num_dishes; $i++) {
print '<tr class="' . $row_styles[$i % 2] . '">';
print "<td>원소 $i</td><td>$dinner[$i]</td></tr>\n";
}
print '</table>';

//결과

<table> <tr class="even"><td>원소 0</td><td>스위트콘과 아스파라거스</td></tr> <tr class="odd"><td>원소 1</td><td>레몬 치킨</td></tr> <tr class="even"><td>원소 2</td><td>삶은 망태버섯</td></tr> </table>


-foreach() 코드 불록 내부에서 배열 원소의 값 수정하기


-특정 키로 배열 원소 찾기

-array_key_exists(키,배열) :해당 배열에 키값이 존재하는지 확인 

<?php
$meals = array('Walnut Bun' => 1,
'Cashew Nuts and White Mushrooms' => 4.95,
'Dried Mulberries' => 3.00,
'Eggplant with Chili Sauce' => 6.50,
'Shrimp Puffs' => 0); // Shrimp Puffs 는 무료!
$books = array("이용객을 위한 A급 중국어 안내",
'중국의 요리 방식과 식사 문화');

// 다음 조건식은 참이다.
if (array_key_exists('Shrimp Puffs',$meals)) {
print "네, Shrimp Puffs 메뉴도 가능합니다.";
}
// 다음 조건식은 거짓이다.
if (array_key_exists('Steak Sandwich',$meals)) {
print "Steak Sandwich 메뉴도 있습니다.";
}
// 다음 조건식은 참이다.
if (array_key_exists(1, $books)) {
print "1번 원소는 중국의 요리 방식과 식사 문화입니다.";
}

결과:네, Shrimp Puffs 메뉴도 가능합니다.1번 원소는 중국의 요리 방식과 식사 문화입니다.


-특정 값으로 배열 원소 찾기

-in_array(값,배열); 해당배열에 해당 값이 있으면 참을 리턴

<?php
$meals = array('Walnut Bun' => 1,
'Cashew Nuts and White Mushrooms' => 4.95,
'Dried Mulberries' => 3.00,
'Eggplant with Chili Sauce' => 6.50,
'Shrimp Puffs' => 0);
$books = array("이용객을 위한 A급 중국어 안내 ",
'중국의 요리 방식과 식사 문화');

// Dried Mulberries 키의 값이 3.00이므로 이 조건은 참이다.
if (in_array(3, $meals)) {
print '가격이 $3인 메뉴가 있습니다.';
}
// 이 조건도 참이다.
if (in_array('중국의 요리 방식과 식사 문화', $books)) {
print "중국의 요리 방식과 식사 문화를 보실 수 있습니다.";
}
// in_array() 는 대소문자를 구별하므로 이 조건은 거짓이다.
if (in_array("이용객을 위한 a급 중국어 안내", $books)) {
print "이용객을 위한 A급 중국어 안내를 보실 수 있습니다.";
}

//결과:가격이 $3인 메뉴가 있습니다.중국의 요리 방식과 식사 문화를 보실 수 있습니다.


-for() 루프로 숫자 키 배열의 각 원소 확인하기

<?php
$dinner = array('스위트콘과 아스파라거스',
'레몬 치킨',
'삶은 망태버섯');
for ($i = 0, $num_dishes = count($dinner); $i < $num_dishes; $i++) {
print "메뉴 번호 $i: $dinner[$i]\n";
}

메뉴 번호 0: 스위트콘과 아스파라거스 메뉴 번호 1: 레몬 치킨 메뉴 번호 2: 삶은 망태버섯


-특정 값으로 배열 원소 찾기

-array_search(값,배열); 배열에 해당 값이 있으면 키 값을 리턴한다.

<?php
$meals = array('Walnut Bun' => 1,
'Cashew Nuts and White Mushrooms' => 4.95,
'Dried Mulberries' => 3.00,
'Eggplant with Chili Sauce' => 6.50,
'Shrimp Puffs' => 0);

$dish = array_search(6.50, $meals);
if ($dish) {
print "$dish 메뉴의 가격은 \$6.50입니다.";
}

//결과 Eggplant with Chili Sauce 메뉴의 가격은 $6.50입니다.



-배열의 연산

<?php
$dishes['Beef Chow Foon'] = 12;
$dishes['Beef Chow Foon']++;
$dishes['Roast Duck'] = 3;

$dishes['total'] = $dishes['Beef Chow Foon'] + $dishes['Roast Duck'];

if ($dishes['total'] > 15) {
print "많이도 먹었군";
}

print 'Beef Chow Foon 메뉴를 총 ' . $dishes['Beef Chow Foon'] . ' 그릇 드셨습니다.';

//많이도 먹었군Beef Chow Foon 메뉴를 총 13 그릇 드셨습니다.



-문자열 내부에 배열 원소의 값 삽입하기

<?php
$meals['breakfast'] = '호두 번';
$meals['lunch'] = '칠리 소스 가지 볶음';
$amounts = array(3, 6);

print "아침 메뉴는 $meals[breakfast],\n";
print "점심 메뉴는 $meals[lunch]으로 할께요.\n";
print "아침에는 $amounts[0]개, 점심에는 $amounts[1]개 부탁해요.";

//아침 메뉴는 호두 번, //점심 메뉴는 칠리 소스 가지 볶음으로 할께요. //아침에는 3개, 점심에는 6개 부탁해요.


<?php
$meals['Walnut Bun'] = '$3.95';
$hosts['www.example.com'] = '웹사이트';

print "호두 번의 가격은 {$meals['Walnut Bun']}입니다.\n";
print "www.example.com은 {$hosts['www.example.com']}입니다.";

//호두 번의 가격은 $3.95입니다. www.example.com은 웹사이트입니다.



-sort(), asort(), ksort()로 배열 정렬하기


-역순으로 배열 정렬하기


-다차원 배열 정의하기

<?php
$meals = array('breakfast' => ['호두 번', '커피'],
'lunch' => ['캐슈너트', '양송이버섯'],
'snack' => ['말린 오디', '참깨 게살 무침']);

$lunches = [['닭고기', '가지', '쌀'],
['소고기', '부추', '국수'],
['가지', '두부']];

$flavors = array('Japanese' => array('hot' => '와사비',
'salty' => '간장 소스'),
'Chinese' => array('hot' => '머스터드',
'pepper-salty' => '허브잎'));

print $meals['lunch'][1]; // 양송이버섯
print $meals['snack'][0]; // 말린 오디
print $lunches[0][0]; // 닭고기
print $lunches[2][1]; // 두부
print $flavors['Japanese']['salty']; // 간장 소스
print $flavors['Chinese']['hot']; // 머스터드



-다차원 배열의 원소에 개별적으로 접근하기

<?php
$prices['dinner']['Sweet Corn and Asparagus'] = 12.50;
$prices['lunch']['Cashew Nuts and White Mushrooms'] = 4.95;
$prices['dinner']['Braised Bamboo Fungus'] = 8.95;

$prices['dinner']['total'] = $prices['dinner']['Sweet Corn and Asparagus'] +
$prices['dinner']['Braised Bamboo Fungus'];

$specials[0][0] = '체스트넛 번';
$specials[0][1] = '호두 번';
$specials[0][2] = '땅콩 번';
$specials[1][0] = '체스트넛 샐러드';
$specials[1][1] = '호두 샐러드';
// 숫자 키를 생략하면 배열 마지막에 추가된다.
// 이 구문은 $specials[1][2]에 저장된다.
$specials[1][] = '땅콩 샐러드';


-foreach()와 for() 루프로 다차언 배열의 각 원소 확인하기

<?php
$specials = array( array('체스트넛 번', '호두 번', '땅콩 번'),
array('체스트넛 샐러드','호두 샐러드', '땅콩 샐러드') );

// $num_specials은 $specials의 첫 번째 차원의 원소의 개수이므로 2다.
for ($i = 0, $num_specials = count($specials); $i < $num_specials; $i++) {
// $num_sub은 각 하위배열의 원소의 개수이므로 3이다.
for ($m = 0, $num_sub = count($specials[$i]); $m < $num_sub; $m++) {
print "Element [$i][$m]은 " . $specials[$i][$m] . "입니다.\n";
}
}


-문자열 내부에 다차원 배열 원소 삽입하기

<?php
$specials = array( array('체스트넛 번', '호두 번', '땅콩 번'),
array('체스트넛 샐러드','호두 샐러드', '땅콩 샐러드') );

// $num_specials은 $specials의 첫 번째 차원의 원소의 개수이므로 2다.
for ($i = 0, $num_specials = count($specials); $i < $num_specials; $i++) {
// $num_sub은 각 하위배열의 원소의 개수이므로 3이다.
for ($m = 0, $num_sub = count($specials[$i]); $m < $num_sub; $m++) {
print "Element [$i][$m]은 {$specials[$i][$m]}입니다.\n";
}
}


<?php
$dinner = array('스위트콘과 아스파라거스',
'레몬 치킨',
'삶은 망태버섯');
print "$dinner[0] 그리고 $dinner[1] 주세요.";


-배열 추가하기

<?php
// 두 개의 원소가 있는 $lunch 배열 생성하기
// $lunch[0]을 지정한다.
$lunch[] = '브라운 소스를 곁들인 말린 버섯';
// $lunch[1]을 지정한다.
$lunch[] = '파인애플과 버섯';

// 세 개의 원소가 있는 $dinner 배열 생성하기
$dinner = array('스위트콘과 아스파라거스',
'레몬 치킨',
'삶은 망태버섯');
// $dinner 배열 마지막에 원소 추가하기
// $dinner[3]이 지정된다.
$dinner[] = '양념 치마살';


-배열 삭제하기

<?php

$dishes = array();
unset($dishes['Roast Duck']);


-foreach로 배열의 키와 값 가져오기

<?php
$meal = array('breakfast' => '호두 번',
'lunch' => '캐슈너트와 양송이버섯',
'snack' => '말린 오디',
'dinner' => '칠리 소스 가지 볶음');
print "<table>\n";
foreach ($meal as $key => $value) {
print "<tr><td>$key</td><td>$value</td></tr>\n";
}
print '</table>';


//결과

<table>

<tr><td>breakfast</td><td>호두 번</td></tr>

<tr><td>lunch</td><td>캐슈너트와 양송이버섯</td></tr>

<tr><td>snack</td><td>말린 오디</td></tr>

<tr><td>dinner</td><td>칠리 소스 가지 볶음</td></tr>

</table>


-foreach로 class 값 변경해서 css 다르게 적용하기

<?php
$row_styles = array('even','odd');
$style_index = 0;
$meal = array('breakfast' => '호두 번',
'lunch' => '캐슈너트와 양송이버섯',
'snack' => '말린 오디',
'dinner' => '칠리 소스 가지 볶음');
print "<table>\n";
foreach ($meal as $key => $value) {
print '<tr class="' . $row_styles[$style_index] . '">';
print "<td>$key</td><td>$value</td></tr>\n";
// $style_index 변수에 0과 1을 번갈아 지정한다.
$style_index = 1 - $style_index;
}
print '</table>';

//결과

<table>

<tr class="even"><td>breakfast</td><td>호두 번</td></tr>

<tr class="odd"><td>lunch</td><td>캐슈너트와 양송이버섯</td></tr>

<tr class="even"><td>snack</td><td>말린 오디</td></tr>

<tr class="odd"><td>dinner</td><td>칠리 소스 가지 볶음</td></tr>

</table>


출처: 한빛 미디어 learning php 

데이터:텍스트와 숫자다루기

다룰내용


-프로그램에서 문자열을 정의하는 세가지 방법: 작은따옴표, 큰따옴표, here문서

-이스케이핑

-문자열 길이 확인을 통한 유효성 검사, 시작과 끝에 있는 화이트스페이스를 제거하거나 다른문자열과 비교하기

-printf()로 문자열에 형식 정하기

-strtolower(), strtoupper(), ucwords()를 이용한 문자열 대소문자 조작

-substr()로 문자열 일부 선택하기

-str_replace()를 이용한 문자열 부분 교체

- 프로그램 안에서 수 정의하기

- 수학계산

- 변수에 값 저장하기 

- 올바른 변수명

- 변수에 조합 연산자 사용하기

- 증가 연산자와 감소 연산자

- 문자열 내부에 변수 삽입하기






-프로그램에서 문자열을 정의하는 세가지 방법: 작은따옴표, 큰따옴표, here문서


<?php

print '세트 메뉴 1번 주세요.';

print '치킨';

print '06520';

print '"나 지금 저녁 식사 중이라고." 그가 으르렁거렸다.';


-이스케이핑

<?php

print 'We\'ll each have a bowl of soup.';


<?php

print '문자열 안에서 \\ 문자를 이스케이프하기';



-문자열 길이 확인을 통한 유효성 검사, 시작과 끝에 있는 화이트스페이스를 제거하거나 다른문자열과 비교하기


<?php

// $_POST['zipcode']는 폼 매개변수 "zipcode"로 제출된 값을 담는다.

$zipcode = trim($_POST['zipcode']);

// 이제 $zipcode는 시작이나 끝에 있는 공백이

// 제거된 값을 담는다.

$zip_length = strlen($zipcode);

// 우편번호가 5자리가 아니면 문제를 제기한다.

if ($zip_length != 5) {

    print "우편번호를 5자리로 입력해주세요.";

}


<?php

if (strlen(trim($_POST['zipcode'])) != 5) {

    print "우편번호를 5자리로 입력해주세요.";

}



//대소문자 비교 없이 비교

<?php

if (strcasecmp($_POST['email'], 'cloudshadow@gmail.com') == 0) {

    print "다시 뵙게되어 반갑습니다, 정병열 님.";

}


-strtolower(), strtoupper(), ucwords()를 이용한 문자열 대소문자 조작


<?php

//모두 소문자로

print strtolower('Beef, CHICKEN, Pork, duCK');

//모두 대문자로

print strtoupper('Beef, CHICKEN, Pork, duCK');


<?php

//첫번째 글자만 대문자로

print ucwords(strtolower('JOHN FRANKENHEIMER'));



-substr()로 문자열 일부 선택하기

<?php

// $_POST['comments']의 첫 30 바이트를 출력한다.

print substr($_POST['comments'], 0, 30);

// 말줄임표를 붙인다.

print '...';



-str_replace()를 이용한 문자열 부분 교체

<?php


$html = '<span class="{class}">유부<span>

<span class="{class}">생선 튀김</span>';


print str_replace('{class}',$my_class,$html);



$my_class 의 값이 lunch 일때 결과

<span class="lunch">유부<span>

<span class="lunch">생선 튀김</span>


- 프로그램 안에서 수 정의하기

- 수학계산

- 변수에 값 저장하기 

- 올바른 변수명

- 변수에 조합 연산자 사용하기

- 증가 연산자와 감소 연산자



- 문자열 내부에 변수 삽입하기

<?php

$page_title = '메뉴';

$meat = '돼지고기';

$vegetable = '숙주나물';

print <<<MENU

<html>

<head><title>$page_title</title></head>

<body>

<ul>

<li> $meat 바베큐

<li> 저민 $meat

<li> $meat 조림과 $vegetable

</ul>

</body>

</html>

MENU;



출처: 한빛미디어 Learning php 도서

클래스 맴버 만들기(static)


static.php

<?php
//클래스 변수
//고정된 이라는뜻
// static : 모든 인스턴스가 공유하는 변수 만들기!!
//static 변수는 class 명으로 바로 접근할 수 있다.(instance 즉 객체를 만들지 않고 접근가능하다.)


class Person{

private $name; //다른 객체가 접근할 수 없다. 즉 공통으로 사용할 수 없다.

private $count = 0;

//생성자: 객체가 생성될때 필요한 값을 셋팅한다.
function __construct($name){
$this->name = $name;
$this->count = $this->count +1;
}

function enter(){
echo "<h1>Enter ".$this->name." {$this->count} th</h1><br>";
}

}

$p1 = new Person('abcnt');
$p1 ->enter();


$p2 = new Person('하하하');
$p2 ->enter();

$p1 = new Person('호호호');
$p1 ->enter();


?>



static2.php

<?php
//클래스 변수
//고정된 이라는뜻
// static : 모든 인스턴스가 공유하는 변수 만들기!!
//static 변수는 class 명으로 바로 접근할 수 있다.(instance 즉 객체를 만들지 않고 접근가능하다.)


class Person{


//인스턴스 변수
private $name; //다른 객체가 접근할 수 없다. 즉 공통으로 사용할 수 없다.


//클래스 변수 // 모든 인스턴스가 공유한다!!
//클래스 변수에는 self::를 사용한다.
private static $count = 0;

//생성자: 객체가 생성될때 필요한 값을 셋팅한다.
function __construct($name){
$this->name = $name;
self::$count = self::$count +1;
}

function enter(){
echo "<h1>Enter ".$this->name." ".self::$count." th</h1><br>";
}

//클래스 이름으로 호출되려면 static을 호출해야 한다.
static function getCount(){

//클래스 변수에는 self를 사용한다.
return self::$count;
}

}


$p1 = new Person('abcnt');
$p1 ->enter();

$p2 = new Person('하하하');
$p2 ->enter();

$p1 = new Person('호호호');
$p1 ->enter();

//클래스 변수 호출
echo Person::getCount();

?>


상속기본


inheritance.php

<?php

//상속

class Animal{

function run(){
print('runing...<br>');
}

function breath(){
print('breathing...<br>');
}

}


// human은 Animal 의 메소드(기능)를 상속 받아서(extends) human에 없는 메소드도 사용가능하다.
class human extends Animal{

function think(){
print('thinking...<br>');
}

function talking(){
print('talking...<br>');
}

}

//human에 없는 메소드도 사용가능하다.
$human = new Human();
$human ->run();
$human ->think();

?>



inheritance2.php

<?php

//이미 php문서에 정의되어있는 클래스
$file = new SplFileObject('data.txt');


//파일을 읽을 것이다.(파일의 사이즈)
//var_dump($file->fread($file->getSize()));

//파일의 다시 처음으로 돌아와서 읽기 시작해라
//$file->rewind();

//var_dump($file->fread($file->getSize()));


//SplFileObject을 상속하는 MyFileObject 클래스 생성
class MyFileObject extends SplFileObject{

//부모의 메소드 상속받아서 자식부분에서 제정의 했다.
function getContents(){
$content = $this->fread($this->getSize());
$this ->rewind();
return $content;
}
}

//객체 생성
$file = new MyFileObject('data.txt');

//#
//var_dump($file->fread($file->getSize()));
//$file->rewind(); // 이 메소드를 호출해줘야 다시 처음으로 가서 읽는다.
//var_dump($file->fread($file->getSize()));


var_dump($file->getContents());
//getContents안에서 rewind() 해주었기 때문에..여기서 rewind해주지 않아도 된다.
//#1 부분을 반복할 필요가 없음
var_dump($file->getContents());



?>



접근제어자(access modifier)


static.php

<?php
//클래스 변수
//고정된 이라는뜻
// static : 모든 인스턴스가 공유하는 변수 만들기!!
//static 변수는 class 명으로 바로 접근할 수 있다.(instance 즉 객체를 만들지 않고 접근가능하다.)


class Person{

private $name; //다른 객체가 접근할 수 없다. 즉 공통으로 사용할 수 없다.

private $count = 0;

//생성자: 객체가 생성될때 필요한 값을 셋팅한다.
function __construct($name){
$this->name = $name;
$this->count = $this->count +1;
}

function enter(){
echo "<h1>Enter ".$this->name." {$this->count} th</h1><br>";
}

}

$p1 = new Person('abcnt');
$p1 ->enter();


$p2 = new Person('하하하');
$p2 ->enter();

$p1 = new Person('호호호');
$p1 ->enter();


?>


static2.php

<?php
//클래스 변수
//고정된 이라는뜻
// static : 모든 인스턴스가 공유하는 변수 만들기!!
//static 변수는 class 명으로 바로 접근할 수 있다.(instance 즉 객체를 만들지 않고 접근가능하다.)


class Person{


//인스턴스 변수
private $name; //다른 객체가 접근할 수 없다. 즉 공통으로 사용할 수 없다.


//클래스 변수 // 모든 인스턴스가 공유한다!!
//클래스 변수에는 self::를 사용한다.
private static $count = 0;

//생성자: 객체가 생성될때 필요한 값을 셋팅한다.
function __construct($name){
$this->name = $name;
self::$count = self::$count +1;
}

function enter(){
echo "<h1>Enter ".$this->name." ".self::$count." th</h1><br>";
}

//클래스 이름으로 호출되려면 static을 호출해야 한다.
static function getCount(){

//클래스 변수에는 self를 사용한다.
return self::$count;
}

}


$p1 = new Person('abcnt');
$p1 ->enter();

$p2 = new Person('하하하');
$p2 ->enter();

$p1 = new Person('호호호');
$p1 ->enter();

//클래스 변수 호출
echo Person::getCount();

?>


생성자(인스턴스 초기화)


<?php


//내가 만든 클래스
class MyFileObject{
//생성자-!
//인스턴스를 생성할 때 해야 할 작업을 담아두는 약속된 메소드가 __construct 이다.
// 밑에 객체가 생성될때 호출해서 초기화 해준다.
function __construct($fname){

$this->filename = $fname;
}

//클래스 안에 메소드(기능,함수) 정의
function isFile(){
//$filename 만쓰면 $filename은 isFile이라는 함수안에서만 유요한 함수다.
//그래서 함수 바깥쪽의 instance에 접근하도록 $this를 붙인다.
//$this-> filename: instance variable, instance field, instance property
return is_file($this->filename);
}
}


//클래스를 통한 객체 생성
$file=new MyFileObject('data.txt');

// new MyFileObject 객체에 filename이라는 변수를 만들고 값을 넣어 준다.
//$file->filename = 'data.txt';////파일 이름을 쓰는 방식

var_dump($file->isFile());
var_dump($file->filename);//파일 이름을 가져오는 방식

?>


클래스와 인스턴스 그리고 메소드 만들기

예1)

<?php


//내가 만든 클래스
class MyFileObject{

//클래스 안에 메소드(기능,함수) 정의
function isFile(){
return is_file('data.txt');
}
}

//클래스를 통한 객체 생성
$file=new MyFileObject();
var_dump($file->isFile());

//클래스를 통한 객체 생성
$file2=new MyFileObject();
var_dump($file2->isFile());


?>


예2)

<?php


//내가 만든 클래스
class MyFileObject{
//클래스 안에 메소드(기능,함수) 정의
function isFile(){
//$filename 만쓰면 $filename은 isFile이라는 함수안에서만 유요한 함수다.
//그래서 함수 바깥쪽의 instance에 접근하도록 $this를 붙인다.
//$this-> filename: instance variable, instance field, instance property
return is_file($this->filename);
}
}


//클래스를 통한 객체 생성
$file=new MyFileObject();

// new MyFileObject 객체에 filename이라는 변수를 만들고 값을 넣어 준다.
$file->filename = 'data.txt';////파일 이름을 쓰는 방식

var_dump($file->isFile());
var_dump($file->filename);//파일 이름을 가져오는 방식


//클래스를 통한 객체 생성2
$file2=new MyFileObject();
$file2->filename = 'data2.txt';

var_dump($file2->isFile());
var_dump($file2->filename);



?>

출처:https://opentutorials.org/course/62/15726



  1. 2018.02.24 13:58

    비밀댓글입니다

    • 2018.02.24 14:08

      비밀댓글입니다

+ Recent posts

티스토리 툴바