배경
PHP 는 cgi 를 대체하기 위한 html 템플릿 + db 를 다루는 툴로 시작함.
그래서 프로세스 풀을 두고 요청 수행후 모든 변수, 리소스를 날리는 무상태성임
HTTP 도 무상태임.
PHP 코드는 위의 특성으로 인해 리소스 닫기랑 메모리 관리를 신경안씀
그냥 해당 스크립트실행이 모두완료되면 vm 이 종료하면서 db 연결도 끊어버림.
일단 여기까지 알면 됐고.
모던 PHP 는
php 에 컴포저로 패키지 관리 , 객체지향, include 안쓰고 네임스페이스 기반으로 파일 오토로딩을 하는거였음.
대략 2010년 전후로 이렇게 시작됨. PHP 5.3
컴포저는 중복된 패키지를 설치하지 않아서 npm 처럼 용량 블랙홀에 빠지지않음.
타입들 다 넣고 에러랑 예외정리된건 PHP 8.0 임.
그래서 PHP 8 쓰라는것.
PSR 은 PHP 프레임워크들 지맘대로 만드니까 코딩표준이랑 인터페이스 지정함
로그, 캐시, http 핸들러, 미들웨어 규격, 시간라이브러리등등 표준 지정해놔서 서로 상호운용됨
근데 한 때 쓰던 코드이그나이터라는 녀석은 psr 생깐다고 지네 레포에 박아놓음
심포니, yii, 라라벨 정도가 되고 그외 마이크로 프레임워크들은 거의다 psr 준수함
psr 구현체로만 이루어진 laminas 라는 프레임워크도 있음.
해당 글에는
https://gall.dcinside.com/mgallery/board/view/?id=github&no=84795
모던 PHP는 딱 이거임천재 지적 장애인함수가 전부 절car지향에 맞춰져있고 인자값 순서도 개판에 함수명도 아작나있고 Reflection도 반쪽짜리에 Enum도 Backed Enum이라는 개병신에 전역변수에다가 다 집어넣는 병신같은 설계도에gall.dcinside.comenum 다른키에 값을 중복할수없는게 단점이라는데
아니 키가 다른데 왜 값이 같냐고...
<?php
enum UserRole: string
{
case Admin = 'admin';
case SuperUser = 'admin'; // PHP는 이 경우 Fatal Error를 발생시켜 중복을 막습니다.
}
enum LegacyStatus: int
{
case Finished = 100;
case Success = 100; // ❌ PHP Fatal Error 발생
}
뭐 팀장겸 안전관리자 인거냐 그러면 enum 을 분리해야되는거 아님??
enum 을 스위치키로 쓰고있는건가 어캐 쓰길래... 저게 단점이 될까
enum 을 배열키로 못쓰는게 단점이긴한데
모던 php 는 클래스 쓰라고하지 배열가지고 지랄하는거 신경안씀.
2. php 는 기본은 비동기 없다고 봐야되.
프로세스 포크 뜨는거랑 fiber 가 있는데 i/o 함수들이 동기식이야.
그래서 별 소용없음. 그저 큐를 사용해서 쓰고있음.
swoole, 로드러너는 i/o 함수들을 다 재구현해놨는데 octane 설정하고 static 변수들있는 코드만 수정하면 씀.
리소스 안닫는 기존관행들을 알고있어서 전역에서 닫게끔 다해놓음.
csv 천줄짜리 안된다는데 10억줄 파싱도 그냥했는데 뭔...
phpmyadmin 에도 csv 로 데이터 내보내는모드있는데
심포니는 컴포넌트들 중심으로 만든 프레임워크고
처음에 스프링이랑 하이버네이트 따라한다고 만들어짐
2005년 출시 올해로 20주년임
라라벨은 php 프레임워크중에서는 느리지만 array_ 함수들 일관성있고 객체지향으로 만든다고
자체 컬렉션 만들었는데 이거 때문에 인기많음.
ORM 에서 데이터 다루기도 편함
심포니 하는 사람들은 라라벨 ORM 이 엑티브레코드라고 싫어함 얘네는 루비도 싫어함. 왜냐 루비는 개느리고
엑티브레코드는 실패한 디자인이라고 생각함.
그냥 PHP 판 nestjs 이고 벤치마크 지표에서 nestJS 랑 속도거의 같음.
처음에 스프링의 설정 xml 따라하다가 나중에 yaml 넣음 yaml 은 선택임
끝.
비동기는 이제 넣으려고함
https://externals.io/message/129004
1년동안 계속 논의중임
함수색깔 문제없어야한다는 사람들이랑 고랭모델, 스위프트의 구조적 동시성 이야기 하는중
PHP True Async RFC Stage 5 - Externals#externals - Opening PHP's #internals to the outsideexternals.io그래서 모던 php 목적이 뭐냐?
PHP 코드 개선 운동임
프레임워크 표준화/ 배열을 해시맵으로 장난치는거 하지말자하고 (자바 si 에서 map 쓰는거 극혐하잖아? 그런거임)
클래스기반 객체쓰기, 패키지관리, MVC 등 아키텍처 잡고 개발
다른 언어대비 우위가 있냐?
딱히 없음 그게 문제임 메일링리스트 애들도 알고있음
근데 PHP 쓸거면 이렇게 쓰자 하는거임.
PHP 재단에서 후원금받아서 사람모아서 운영한지 이제 3년이고 그전에 php 만지던 사람은 PHP vm 문제점들 계속정리했는데 한 10년간 하다가 LLVM 한다고 떠남.
글고 php 싫은데 바꾸고싶고 그런사람은 레딧가서 적으셈 php 레딧에 php 컨트리뷰터랑 고인물들 다있음
https://www.reddit.com/r/PHP/
php로 야동이나 야한 망가 올라오면 당신인줄 알겠습니다
근데 php 하는 사람들한테 물어보고 싶다. 니들 유지보수 하긴하냐? api만 바껴도 코드 창날거 같은데
유지보수하는데 그리고 php 버전 메이저버전아니면 deprecated 만 내서 준비시키는데 이런거 자동으로 고치는툴은 PHP 7 시절에 많이 난립하고 지금남은건 rector 임 충분함. 심포니도 업글할때 rector 기반으로 플러그인 만들어서 공식이 이거 쓰세요함.
WinAPI FFI 값을 Enum으로 쓸 때 당연히 Key는 다른데 값이 똑같은게 엄청나게 많고 영어를 공용어로 쓰는 나라가 많지? 너가 생각이 짧은거임
그리고 파일 관련 함수는 PHP가 느린게 맞음 느리다니까 된다로 갑자기 말이 바뀜?
아 그래 파일 I/O 느린거맞음 그리고 윈도에서는 더 느리지
1년동안 논의중이고 넣는다는 소리는 없는데 굳이 결정도 안된 미래를 점지어서 결론내는건 또 뭔 짓인지
RFC 제작자가 이거 투표시작하려고 계속 시도함 투표 통과되면 기능 넣는거고 ㅇㅇ 관련하는사람들이 계속 이런케이스는? 저런케이스는? 하면서 RFC 올라온거 리뷰중
그리고 Enum Value값 중복은 마이크로소프트 공식 문서에도 Enum 값이 중복되는 케이스 적어놓고 Fine Case로 적어뒀음
그거 PHP 레딧에다가 올려가지고 PHP 이슈로 해야겠네 ㅇㅇ
아... PHP 얘네들 c# 참고 자꾸하던데 이거 봤나보다
CA1069: Enums should not have duplicate values
https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1069
C#
에는 enum 키 다른데 값이 같으면 컴파일 경고내네...
https://thephp.foundation/blog/2025/10/30/php-streams-evolution/
난
이거 보고 PHP 9.x 에는 fiber 같은게 아니라 진짜 비동기 생길 거 같음 ㅇㅅㅇ
진짜 PHP식 비동기, 일단 프로세스가 꺼지고 컴퓨터가 재부팅되고 나서 프로세스가 돌때 동기로 돌아가는 PHP식 비동기
@ㅇㅇ(175.116) 아니 php 워커모드있잖아. 독일정부산하 오픈소스 후원기구에서 비동기하라고 3억 꽂아넣음. 워커모드 + 비동기는 가능성성있음. 지금 swoole , 로드러너 기능 걍 코어에 넣어버리는거임