PHP 객체지향 배우기
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 맴버변수 입니다.
이 변수 뒤에 [] 가 붙는다면 해당 변수는 배열 변수라는 의미이고
해당 변수에 뭔가를 저장한다면 배열 마지막에 값이 추가됩니다.
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 로 선언된 변수라도 위와 같이 사용을 하면 외부에서 접근이 가능하다는 것에 주의하셔야 합니다.
php 클래스 궁금한거요~
PHP 클래스에 대한 질문좀 드릴게요 제로보드 XE를 뜯어본적이 있는데 클래스를 생성할때 클래스에 인수를 넘기는게 있던데 어떻게 받는건지;;예를들어서 $test = new Clas...
kin.naver.com
:: 실행연산자
우선 일반적인 방법으로 aa() 메소드를 실행하려면...
$t = new test();
$t->aa();
이렇게 해야 합니다. 하지만 :: 연산자를 사용하면 아래와 같이 한줄로 끝나죠.
test::aa();
여기서 중요한 것은 위와 같이 실행했을 경우 실제 test 객체는 생성되지 않습니다. 그 말은 $num 이란 멤버 변수 역시 생성되지 않는 다는 것이죠. 그래서 test::bb() 와 같이 bb() 메소드를 실행하면 에러가 출력됩니다. 이 점만 기억하시면 별문제 없이 사용하실 수 있겠네요.