PHP 19

PHP 공식문서 SVN에서 Git으로 이전되었네요.

PHP 사이트와 공식문서는 SVN으로 관리되고있었습니다. 2020년 부터 문서 옮기는 작업이 되고 있다가 2021년 새해부터 전부 Git으로 이전되고 PHP 5.x 문서들이 삭제되어 PHP 5버전대는 www.php.net/manual/php5.php 에서만 확인가능합니다. Git으로 이전한 이후 여러 사람들이 참가해서 전보다 더 활발해지고 있군요! 아래는 이제는 지원이 끝난 PHP 5버전 대 문서링크입니다. PHP: PHP Version 5 Documentation Documentation for PHP 5 Introduction The PHP 5 documentation was removed from the PHP Manual in September 2020, approximately two years..

PHP 2021.01.01

코드이그나이터 3 REST api 라이브러리 문제들

코드이그나이터3에서 기본적인 URL라우팅 구조는 다음과 같습니다. 폴더/컨트롤러 클래스이름/함수이름 이런구조인데요 ci3 에서 restful api를 지원하는 라이브러리들은 저기 함수를 변형하여 login_post() / login_get() 이런식으로 함수이름 뒤에 http메서드를 넣습니다. 이제 api를 만들어보면 api폴더하위에 Reservation 컨트롤러에서 이런일이 생기죠 class Reservation extends RestController { public function __construct() { parent::__construct(); $this->load->library('ReservationService'); $this->load->library('session'); } //예약확..

PHP 2020.12.31

코드이그나이터 3에서 라이브러리 설치시 autoload 에러

코드이그나이터 4는 rest api를 기본적으로 지원하지만 3버전은 rest api관련 라이브러리를 따로 설치해야합니다. An uncaught Exception was encountered Type: Error Message: Class 'chriskacerguis\RestServer\RestController' not found 라며 컴포저로 설치한 RestController 라이브러리를 찾을 수없다고 나옵니다. 코드이그나이터 config.php파일에서 컴포저 오토로드 경로를 재설정해주면 됩니다. $config['composer_autoload'] = FCPATH.'vendor/autoload.php'; 컴포저 없이 PHP 엔진기능으로 클래스 로딩을 추가하자는 RFC 도 봤는데요 언제 될지는 모르지만 ..

PHP 2020.11.10

PHP 버전별 함수 선언과 클래스 선언방식 PHP5.3~ PHP 8.0

PHP 는 동적타입언어지만 정적타입언어들의 요소를 추가해왔습니다. 현업에서는 구버전이 꽤 있다고 들어서 정리해봤습니다. PHP코딩 권장표준안 PSR-12 규칙을 보면 {}중괄호는 다음줄에 표시하라고 나와있네요 PHP 5.3 function add($a, $b) { return $a + $b ; } function($a, $b) // 익명함수 { return $a + $b ; } 리턴타입 지정 불가능 ㅠ 주석에 적지않으면 긴 함수들은 뭐가 리턴되는지 알수 없네요 파라미터 타입 지정 array, callable만 가능 ㅠ PHP 7.0 //2015년 12월 출시 function add(int $a, int $b): int { return $a + $b ; } echo (function($a, $b){ ret..

PHP 2020.11.03

PHP 8.0 바뀐점 정리된곳

php.watch/versions/8.0 PHP 8.0: What's New and Changed PHP has come a long way with types. We now have scalar types, return types, nullable types, and even property types in PHP 7.4! PHP 8.0 comes with support for Union Types! In versions prior to PHP 8.0, you could only declare a single type for properties, p php.watch 바뀐점과 새로운 기능들을 코드 예제와 함께 설명이 잘되어있습니다. PHP 8은 아직 정식버전이 나오지 않아 php.net에는 올라와있지 ..

PHP 2020.10.25

PHP 8.0 애트리뷰트 문법 논란

PHP 8.0에서는 애트리뷰트(자바나 다른언어의 어노테이션)기능이 추가되었습니다. 애트리뷰트는 클래스, 함수, 변수의 메타 데이터입니다. (메타데이터는 다른데이터를 설명하는데이터 입니다.) PHP 위원회는 로 > 문법을 제시했고 PHP레딧이나 PHP사용자 커뮤니티에서 복잡하다며 @@Attribute 로 하자고 했는데요 보통 다른언어들에서는 @로 시작하는데 PHP에서 @는 경고를 끄는 의미로 쓰고 있어서 ㅋㅋ 결국 Rust언어문법을따라한 #[ ] 가 되었네요 PHP .. PHP 레딧 댓글보면 PHP 9에서는 기존의 @를 다른거로 바꾸고 @문법으로 선언할수있게 하자고 하는등 난리네요 ㅋㅋ --------------------- > -> @@ -> #[]

PHP 2020.09.03

PHP SQL인젝션과 mysqli bind_param

예전에 작성한 PHP코드를 살펴보니 mysqli 로만 되어있을 뿐 쿼리에 변수를 그대로 대입해서 SQL인젝션 공격에 취약했습니다. $query = "insert into parktable (total,big,mid,small,date) values ($total,$big,$md,$sm, $today)"; $result = mysqli_query($dbConnect,$query); 공격자가 변수에 다른 SQL문을 보내서 테이블을 지우거나 계정을 바꿀 수도있는 보안에 심각한 상황입니다. https://modernpug.github.io/php-the-right-way/#mysql_extension PHP: The Right Way 한국어판 쉽게 읽을 수 있는 PHP의 베스트 프랙티스, 코딩 표준, 권위있는 ..

PHP 2020.04.06