본 게시글은 유튜브 생활코딩 온라인강의를 시청한 후 학습한 정보를 기록하는 목적의 게시글입니다.
생각의 흐름에 따라 작성된 게시글입니다. 가독성이 떨어질 수 있습니다.
생활코딩
일반인에게 프로그래밍을 알려주는 온라인/오프라인 활동 입니다.
www.youtube.com
생활코딩
hello world 생활코딩의 세계에 오신 것을 환영합니다. 생활코딩은 일반인들에게 프로그래밍을 알려주는 무료 온라인, 오프라인 수업입니다. 어떻게 공부할 것인가를 생각해보기 전에 왜 프로그래밍을 공부하는 이유에 대한 이유를 함께 생각해보면 좋을 것 같습니다. 아래 영상을 한번 보시죠. 온라인 강의 소개 입문자의 가장 큰 고충은 '무엇을 모르는지 모르는 상태'일 겁니다. 온라인에는 프로그래밍을 익히는 데 필요한 거의 모든 정보가 있지만, 이 지식들은
opentutorials.org
생활코딩 WEP3 PHP & MySQL을 수강하기 위한 선수과목인
WEB2 - PHP와 DATABASE2 - MySQL에 대한 수강 기록입니다.
수강 일정은 야학의 수강계획표에 따릅니다.
#0.
우리는 지금까지 PHP에서 기본적으로 제공되는 내장함수를 사용하는 법을 살펴보았다.
그래서 이제는 우리가 직접 함수를 만들어 사용하는, 함수의 소비자에서 생산자로 한걸음 나아가고자 한다.
PHP에서 함수륻 다루는 법은 이곳을 참조하자.
PHP: Functions - Manual
There are no user contributed notes for this page.
www.php.net
#1-0.
PHP에서 USER가 함수를 정의하는 방법은 이곳을 참조하면 된다.
PHP: User-defined functions - Manual
www.php.net
<?php
function foo($arg_1, $arg_2, /* ..., */ $arg_n)
{
echo "Example function.\n";
return $retval;
}
?>
그 예시를 살펴보면 다른 함수와 클래스 정의를 포함하여 함수 안아 나타낼 수 있음을 알 수 있따.
PHP: The Basics - Manual
CLASSES and OBJECTS that represent the "Ideal World"Wouldn't it be great to get the lawn mowed by saying $son->mowLawn()? Assuming the function mowLawn() is defined, and you have a son that doesn't throw errors, the lawn will be mowed. In the following exa
www.php.net
이는 곳 아래의 코드들 처럼 함수안에 조건문을 사용하거나, 함수 안에 다른 함수를 내장할 수 있음을 의미한다.
// 조건부
<?php
$makefoo = true;
bar();
if ($makefoo) {
function foo()
{
echo "I don't exist until program execution reaches me.\n";
}
}
if ($makefoo) foo();
function bar()
{
echo "I exist immediately upon program start.\n";
}
?>
// 함수 안의 함수
<?php
function foo()
{
function bar()
{
echo "I don't exist until foo() is called.\n";
}
}
foo();
bar();
?>
PHP는 PHP의 모든 함수와 클래스는 전역 범위를 갖는다.
내부에서 정의 된 경우에도 함수 외부에서 호출할 수 있으며, 그 반대의 경우도 마찬가지이다.
여기서 주의해야 할 사안은, PHP에서 함수 오버로딩을 지원하지 않으며,
이전에 선언 된 함수를 정의 해제하거나 재정의 할 수 없다는 사실이다.
이 정도의 개념적인 지식을 보충하고 다시 강의로 돌아가자.
#1-1.
<?php
function basic(){
print("Lorem ipsum dolor1<br>");
print("Lorem ipsum dolor2<br>");
}
basic();
basic();
basic();
?>
PHP에서 basic이란 함수는 두 문장을 print하는 것이라 선언한 이후,
그 함수를 호출함으로써 함수에 정의된 내용을 사용할 수 있다.
물론 다른 php코드에서 이 함수를 호출해도 동일한 기능으로 동작한다.
<?php
function basic(){
print("Lorem ipsum dolor1<br>");
print("Lorem ipsum dolor2<br>");
}
?>
<?php
basic();
basic();
basic();
?>
#1-2.
1-1. 에서 만든 함수는 항상 동일한 기능을 동작한다.
이 함수에 값을 넘겨줌으로써 값에 따라 다른 결과값을 표현하도록 만들 수도 있다.
이 때 사용할 수 있는 것이 parameter와 argument이다.
공식문서는 이곳을 참조하자.
PHP: Function arguments - Manual
PASSING A "VARIABLE-LENGTH ARGUMENT LIST OF REFERENCES" TO A FUNCTIONAs of PHP 5, Call-time pass-by-reference has been deprecated, this represents no problem in most cases, since instead of calling a function like this: myfunction($arg1, &$arg2, &$arg3
www.php.net
<?php
function sum($left, $right){
print($left+$right);
print("<br>");
}
sum(2,4);
sum(4,6);
?>
위의 코드를 확인해보면 6과 10이 출력되는 것을 확인할 수 있다.
$left와 $right가 parameter이고 sum함수를 호출할 때 사용한 2, 4, 4, 6이 argument이다.
#1-3.
이 때까지 함수를 입력하는 과정에 대해서 살펴보았다.
함수의 출력값 역시 다른 함수에서 사용할 수 있다.
<?php
function sum2($left, $right){
return $left+$right;
}
print(sum2(2,4));
file_put_contents('result.txt', sum2(2,4));
?>
sum2함수는 이전에 정의한 sum과 달리 출력하는 부분이 없다.
하지만 return을 통해 $left와 $right의 합을 반환하고 있다.
PHP: return - Manual
Note that because PHP processes the file before running it, any functions defined in an included file will still be available, even if the file is not executed. Example: a.php b.php
print함수를 보면 2와 4의 값을 받아서 6을 출력하고 있는 것을 확인할 수 있는데,
이는 곧 ` file_put_contents('result.txt', sum2(2,4)); ` 란, ` file_put_contents('result.txt', 6); ` 으로
동작함을 의미한다.
#2.
이전까지 배운 함수의 형식을 활용하여, 우리의 app에 도입해보자.
현재코드
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<h1><a href="index.php">WEB</a></h1>
<ol>
<?php
$list = scandir('./data');
$i = 0;
while($i < count($list)){
if($list[$i] != '.') {
if($list[$i] != '..') {
echo "<li><a href=\"index.php?id=$list[$i]\">$list[$i]</a></li>\n";
}
}
$i = $i + 1;
}
?>
</ol>
<h2>
<?php
if(isset($_GET['id'])){
echo $_GET['id'];
} else {
echo "Welcome";
}
?>
</h2>
<?php
if(isset($_GET['id'])){
echo file_get_contents("data/".$_GET['id']);
} else {
echo "Hello, PHP";
}
?>
</body>
</html>
만약 제목을 표현하는 코드를 <title> 태그에도 삽입한다고 가정해보자.
그렇다면 코드는 아래와 같이 될 것이다.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>
<?php
if(isset($_GET['id'])){
echo $_GET['id'];
} else {
echo "Welcome";
}
?>
</title>
</head>
<body>
<h1><a href="index.php">WEB</a></h1>
<ol>
<?php
$list = scandir('./data');
$i = 0;
while($i < count($list)){
if($list[$i] != '.') {
if($list[$i] != '..') {
echo "<li><a href=\"index.php?id=$list[$i]\">$list[$i]</a></li>\n";
}
}
$i = $i + 1;
}
?>
</ol>
<h2>
<?php
if(isset($_GET['id'])){
echo $_GET['id'];
} else {
echo "Welcome";
}
?>
</h2>
<?php
if(isset($_GET['id'])){
echo file_get_contents("data/".$_GET['id']);
} else {
echo "Hello, PHP";
}
?>
</body>
</html>
이런식으로 반복되는 코드가 발생할 때 우리는 함수를 사용할 수 있다.
<!DOCTYPE html>
<html>
<head>
<?php
function print_title(){
if(isset($_GET['id'])){
echo $_GET['id'];
} else {
echo "Welcome";
}
}
?>
<meta charset="utf-8">
<title>
<?php
print_title()
?>
</title>
</head>
<body>
<h1><a href="index.php">WEB</a></h1>
<ol>
<?php
$list = scandir('./data');
$i = 0;
while($i < count($list)){
if($list[$i] != '.') {
if($list[$i] != '..') {
echo "<li><a href=\"index.php?id=$list[$i]\">$list[$i]</a></li>\n";
}
}
$i = $i + 1;
}
?>
</ol>
<h2>
<?php
print_title()
?>
</h2>
<?php
if(isset($_GET['id'])){
echo file_get_contents("data/".$_GET['id']);
} else {
echo "Hello, PHP";
}
?>
</body>
</html>
이때까지 우리가 배운 함수의 형식을 응용한다면 이와 같을 것이다.
<?php
function print_title(){
if(isset($_GET['id'])){
echo $_GET['id'];
} else {
echo "Welcome";
}
}
function print_description(){
if(isset($_GET['id'])){
echo file_get_contents("data/".$_GET['id']);
} else {
echo "Hello, PHP";
}
}
function print_list(){
$list = scandir('./data');
$i = 0;
while($i < count($list)){
if($list[$i] != '.') {
if($list[$i] != '..') {
echo "<li><a href=\"index.php?id=$list[$i]\">$list[$i]</a></li>\n";
}
}
$i = $i + 1;
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>
<?php
print_title();
?>
</title>
</head>
<body>
<h1><a href="index.php">WEB</a></h1>
<ol>
<?php
print_list();
?>
</ol>
<h2>
<?php
print_title();
?>
</h2>
<?php
print_description();
?>
</body>
</html>
이렇게 함수를 활용한다면 언제든지 코드를 재사용할 수 있을 뿐더러,
수정 사항이 생겼을 때에도 혁신적으로 시간을 단축할 수 있다.
최근댓글