카테고리 없음

PHP 객체지향 배우기

Khookie 2021. 8. 2. 22:29

 

 

api 는 PHP 가 객체지향을 채택하기 전의 api라 함수형태

 

새로운 api 는 객체지향 SPR api

 

 

객체를 만드는 코드

new SplFileObject('data.txt');

 

$file = new SplFileObject('data.txt');

var_dump($file->isFile());

var_dump($file->isDir());

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

$file->fwrite(rand(1,100));

 

$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

 

 

 

1.

is_file('파일명');

2.

$file = new SplFIleObject('파일명');

$file->isFile();

 

1 과 2는 같은 일을 함

 

 


화살표 -> 의 의미

 

https://blog.naver.com/sonix/221329351028

 

php -> 화살표 의미

class foo {  var $a = 0; function b () {  echo 'method~'; }  }  $foo = new foo; echo $foo->a; // 0 이...

blog.naver.com

PHP 에는 이미 . 연산자가 있기때문에 쓰이는

멤버 (참조)연산자 이다

 

 

 

메소드 참조시 

::

 

 


클래스 이름의 첫글자는 대문자

 

 

자바와 많은 부분 유사함

 

생성자 함수 도 있다 

 

<?php
class Helloworld_model extends Model {

    function Helloworld_model()
    {
        // 모델 생성자 호출
        parent::Model();
    }

 


클래스 내부에서 $this 는 자신을 가리킴

 


$this->actions[] =& $action;

- $this->actions 는 우선 class 맴버변수 입니다.

이 변수 뒤에 [] 가 붙는다면 해당 변수는 배열 변수라는 의미이고

해당 변수에 뭔가를 저장한다면 배열 마지막에 값이 추가됩니다.

 

출처: https://kin.naver.com/qna/detail.naver?d1id=1&dirId=1040203&docId=105400050&qb=cGhwIHBhcmVudDo6&enc=utf8&section=kin.ext&rank=1&search_sort=0&spq=0 

 

PHP 문법에 대해서 궁금한게 있습니다.

C문법은 그래도 잘 알겠는데 PHP를 배우는 요즘 제가 잘 모르는게 있어서요 소스에서 대충 카피해가지고 왔는데 모르는 문법을 좀 가르쳐주셨으면 합니다 1. $this->act...

kin.naver.com

 

-


$a = 1;

$b = $a;

 

위와 같이 했을 때 $b 가 같은 값인 1을 가지고 있긴 하지만 메모리 상에서는 다른 값으로 처리됩니다. 즉 $b 변수에 값이 대입될 때 $a 에 있는 값과 동일한 값을 메모리상 새로운 공간에 저장을 한다는 것이죠. 하지만...

 

$a = 1;

$b = &$a;

 

위와 같이 처리하면 $a 와 $b 는 메모리 위치상 같은 공간의 값을 가리키고 있게 됩니다.

그럼 엠퍼센트가 함수에 붙었을 경우는...

 

class test {

    private $a = 1;

    public function &aa() {

        echo $this->$a;

    }

}

 

$t = new test();

$d = &$t->aa();

echo $d; // 1 출력

 

$d++;

 

echo $t->aa(); // 2 출력

 

위 예제의 결과와 같이 $d 변수에 ++ 를 해주니 실제 객체 안에 있는 $a 멤버변수의 값이 변환되고 있습니다. 만약 위 예제에서 & 를 제외한다면 두번째 출력 값은 1 이 될 것 입니다.

 

그런데 주의하실 점은 위 예제와 같이 메소드를 통해 참조전달을 사용하시려면 메소드명 앞에도 엠퍼센트를 붙여줘야 한다는 것과 class 안에서 private 이나 protected 로 선언된 변수라도 위와 같이 사용을 하면 외부에서 접근이 가능하다는 것에 주의하셔야 합니다.

 

출처

https://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040203&docId=71860315&qb=Y2xhc3M=&enc=utf8&section=kin.qna&rank=3&sort=0&spq=1 

 

 

php 클래스 궁금한거요~

PHP 클래스에 대한 질문좀 드릴게요 제로보드 XE를 뜯어본적이 있는데 클래스를 생성할때 클래스에 인수를 넘기는게 있던데 어떻게 받는건지;;예를들어서 $test = new Clas...

kin.naver.com

 

::  실행연산자

 

 

우선 일반적인 방법으로 aa() 메소드를 실행하려면...

 

$t = new test();

$t->aa();

 

이렇게 해야 합니다. 하지만 :: 연산자를 사용하면 아래와 같이 한줄로 끝나죠.

 

test::aa();

 

여기서 중요한 것은 위와 같이 실행했을 경우 실제 test 객체는 생성되지 않습니다. 그 말은 $num 이란 멤버 변수 역시 생성되지 않는 다는 것이죠. 그래서 test::bb() 와 같이 bb() 메소드를 실행하면 에러가 출력됩니다. 이 점만 기억하시면 별문제 없이 사용하실 수 있겠네요.

 

 

 

 


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