삽질-에러-아놔/php 삽질

PHP 객체 지향 메모

에혀 2020. 2. 1.
<!DOCTYPE html>
<html lang="ko" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>opp 객체지향</title>
  </head>
  <body>


<h1>Function</h1>
<?php
var_dump(is_file('data.txt'));
var_dump(is_dir('data.txt'));
var_dump(file_get_contents('data.txt'));
file_put_contents('data.txt', rand(1,100));
?>
<h1>Object</h1>
<?php
$file = new SplFileObject('data.txt');
// new : 객체 선언 연산
var_dump($file->isFile());
var_dump($file->isDir());
var_dump($file->fread($file->getSize()));
$file->fwrite(rand(1,100));

echo "<br /><br />";

$file2 = new SplFileObject('data2.txt');
var_dump($file2->isFile());
var_dump($file2->isDir());
var_dump($file2->fread($file2->getSize()));
$file2->fwrite(rand(1,100));



// SplFileObject : Class
// $file, $file2 : Instance
// isFile, isDir, fread : Method(function)
// data.txt, data2.txt : state
?>
<br /> <br />
<?php

@$conn = new mysqli('localhost','kang','비번');
// new로 클래스 객체를 생성.
// $conn = mysqli_connect('localhost','kang','비번');
$conn -> select_db('sirasony');
// mysqli_select_db($conn,'sirasony');

$sql = "select * from user";

$result = $conn -> query($sql);
// $result = mysqli_query($conn,$sql);
if (mysqli_connect_errno()){
  echo 'DB 연결 에러 mysqli_connect_error()';
}
$result_num = $result->num_rows;
// $result_num = mysqli_num_rows($result);

print_r($result_num);

$row = $result -> fetch_assoc();
// mysqli_fetch_assoc($result);

// mysqli_fetch_rows(), mysqli_fetch_assoc(), mysqli_fetch_array(), mysqli_fetch_object()
//$row = $result->fetch_object() 나 mysqli_fetch_object($result); 하면, $row->title 로 접근 가능

$result->free();
 // mysqli_free_result($result);
$conn->close();
// mysqli_close($conn);

 ?>
</body>
</html>
​
<?php
error_reporting(E_ALL);    //에러나는 경우 자세하게 체크해줌
class sumclass{
     var $sum = 0; // var로 변수 선언
     function mysum($start,$end){
for($i=$start; $i<=$end; $i++)
     $this->sum +=$i; // $this 변수
return $this->sum;
     }
}
$a = new sumclass;
print $a->mysum(1,100);
?>

 

러닝 PHP

<?php
/*
속성
클래스에 정의된 변수
인스턴스
클래스의 개별적인 사용 단위. 만약 프로그램에서 세 가지 저녁 요리를 차린다면 요리 클래
스의 인스턴스도 세 개 생성된다. 각 인스턴스는 같은 클래스를 기반으로 생성되지만, 속성
값에 따라 내부적으로 차이가 있다. 인스턴스의 메서드 내용은 같지만 메서드가 사용하는
속성값이 인스턴스에 따라 다르므로 메서드의 결과도 달라질 수 있다. 클래스의 새 인스턴
스를 생성하는 것을 ‘객체 인스턴스화’라고 한다.
생성자
객체를 인스턴스화할 때 자동 실행되는 특수 메서드. 보통 생성자에서는 객체 속성을 초기
화하고 객체를 사용할 때 필요한 제반 작업들을 수행한다.
정적 메서드
클래스를 인스턴스화하지 않고도 호출할 수 있는 특수한 메서드 종류. 정적 메서드는 특정
인스턴스의 속성값에 의존하지 않는다

[예제 6-1]의 클래스 정의는 특수 키워드인 class로 시작해 지정한 클래스명을 이어서 붙
인다. 클래스명 뒤에는 중괄호를 쓰고 그 사이에 속성, 메서드 등 클래스 정의의 모든 내용
을 넣는다. [예제 6-1]의 클래스에는 두 가지 속성($name, $ingredients)과 한 가지 메서드
(hasIngredient()) 가 있다. public 키워드는 외부에서 해당 속성이나 메서드에 접근할 수
있도록 허용할 것인지 PHP 엔진에 알려준다. 자세한 내용은 6.5절 ‘속성과 메서드 가시성’에
서 살펴본다.
hasIngredient() 메서드 정의는 일반적인 함수 정의와 대체로 비슷해 보이지만 $this라는
새로운 변수를 사용한다. 클래스는 여러 개의 객체로 인스턴스화될 수 있는데, $this는 함수를
호출하는 현재 인스턴스를 카리키는 특수한 변수다.
*/


class Entree {
    public $name;
    public $ingredients = array();
    public function hasIngredient($ingredient) {  // hasIngredient 메서드 :  클래스 안의 함수
    return in_array($ingredient, $this->ingredients);
    }
    }

// 화살표 지시자(->)는 빼기 기호와 부등호로 구성되며 객체 내부의 속성(변수)이나 메서드(함수)를 향한 길을 나타낸다. 


$soup = new Entree; // Entree 클래스로 객체(인스턴스)를 생성하고 $soup에 할당
// $soup 속성 설정
$soup->name = '닭고기 수프';  // -> name 속성을 지시하고, (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";
}
}


?>

댓글