PHP 언어 특이사항 작업로그...

1.  Include

   - Include 의 대상은 C나 다른 언어처림 파일 내용의 복사가 아닌 대상 파일의 수행
      ( 현재 수행 환경을 기반으로 ) 해당 파일의 수행 결과를 가져오는 형태,  
      - 과거엔 require 와 include가 다르게 동작했으나 현재는 완전히 같은 형태인 것으로 보임.
   - Include 의 대상은 Web Url이 될 수 있음..
   - Include 의 Path 검색 을 환경 변수를 기반으로 하는 것이 가능 한 것으로 보임 
 

ref url :: http://www.php.net/manual/en/ini.core.php#ini.include-path

##############################################################
include_path string
Specifies a list of directories where the require(), include(), fopen(), file(), readfile() and file_get_contents() functions look for files. The format is like the system's PATH environment variable: a list of directories separated with a colon in Unix or semicolon in Windows.

PHP considers each entry in the include path separately when looking for files to include. It will check the first path, and if it doesn't find it, check the next path, until it either locates the included file or returns with a warning or an error. You may modify or set your include path at runtime using set_include_path().

Example #1 Unix include_path
include_path=".:/php/includes" 
Example #2 Windows include_path
include_path=".;c:\php\includes" 
Using a . in the include path allows for relative includes as it means the current directory. However, it is more efficient to explicitly use include './file' than having PHP always check the current directory for every include. ##############################################################


 

2. Java 의 package에 해당하는 것으로 보이는 Namespace는 5.2 이후에 추가됨

3. Function 관련
 - 함수는 대소문자를 구별하지 않는다. ( 변수는 구별 )
 - 함수오버라이딩은 지원하지 않는다. ( 원래 PHP는 지원하지 않음 )
 - 문자, 숫자 _ 만 가능 ( 이름으로 , 첫글자는 숫자 금지 )
 - $NAME() 형태의 함수 호출은 $NAME 이라는 변수내의 값의 이름을 가진 함수 호출
 - 이름만으로 구별한다. ( 오버라이딩이 안되니까 )
 - return type이 명시되지 않는다 ( Type 자체가 없다 -_- )
 - 함수내에 함수가 있는경우 즉 A라는 함수내에 B라는 함수가 있는 경우
   A라는 함수가 호출이되어야 B라는 함수를 호출할 수 있다. 이 경우 A와 B간의 소속 관계는 없다.
   다음 예처럼
   function a() {
         ...............
         function b() { 
         ...........
        }
   }   
  
   이 경우 b() 라는 함수를 사용하고 싶으면 a() 를 실행시키고 b() 를 실행 시켜야 한다. 더 재밌는건 이때 외부에
   b() 라는 함수가 더 있다면.. 즉
   function a() {
         ...............
         function b() { 
         ...........
        }
   }   
    
    function b() {
        ...
    } 
 
    라면 그냥 b() 라고 호출하면 괜찮지만 a() 호출뒤에 b() 를 호출하려 하면 a() 호출 시점에 에러가 발생한다 ( duplicate declare)



4. 4. PHP 의 변수 범위는 아래의 3경우이다
   - 함수내 변수 -> 지역 변수
   - 일반 함수바깥에서 선언된 변수 -> GLOBAL 변수, 함수내에선 사용할 수 없다.
   - 슈퍼 글로벌 어디서든 가능
   -  함수내에서는 global 이라는 키워드를 사용해서 global 변수 를 선언 가능,( 그러나 바깥에서 재 선언 했다면 무용...)


5. CLASS 이름은 대소문자를  구분하지 않는다.


6. Class 는 중첩 되지 않는다.


7. Array 는 Array 라기 보다는 map에 가깝다. 

// This:
$a = array( 'color' => 'red'
,
'taste' => 'sweet'
,
'shape' => 'round'
,
'name' => 'apple'
,
4
// key will be 0
);



8. foreach 문법으로 class내의 구성요소를 배열 처럼 접근 가능하다

foreach (array_expression as $key => $value)
    statement

위 형태에서 array_expression 이 클래스 인스턴스 이름이라면 $key 는 class property $value는 해당 property 의value로 mapping 된다
  ( 샘플이 회사에...)


덧글

  • 여름눈 2012/02/24 03:17 #

    맨처음 PHP 배울때 C 의 #include <stdio.h> 와 php 의 include ("파일") 과 동일한 개념인줄 알고 쫌 헤맸던 기억이 나네요~
    *^^*
※ 로그인 사용자만 덧글을 남길 수 있습니다.


구글애드