PHP는 자체 ES6 필요

나는 PHP에 대해 애증관계가 있다.지난 15년여 동안 저는 다양한 형식으로 PHP를 작성했습니다. 사이트 템플릿과Wordpress부터 완전한 MVC와 SPA 백엔드 솔루션까지.
나는 브라운슨 던바의 댓글"Using and learning ReactJS for 2 years, what have I learnt을 읽고 있다. 나는 여기에 멈추었다.

As we mentioned earlier, JavaScript has been around for some time, and in order to stay relevant a few people decided it was time to give it an update and that is when ES6 was born.


Javascript와 PHP는 그 발전 과정에서 비슷한 점을 가지고 있다.이 두 버전 모두 현재 사용되고 있는 버전을 위해 구축된 것이 아니다. 1995년에 브랜던 에치(Brendan Eich)는 10일 동안 자바스크립트를 원형으로 하고 브라우저에 Netscape 상호작용을 제공했다. 1994년에 라스무스 러도프(Rasmus Lerdorf)는 PHP를 템플릿 엔진으로 작성했다.양자의 유행으로 인해, 그것들은 이미 완전히 다른 것으로 변했다.
지난 몇 년 동안 (Python2->3의 고통을 극복한 후) 나는 PHP가 앞으로의 호환성을 어떻게 깨뜨리고 싶은지 생각하고 이야기해 왔다.나는 이것이 발생하지 않을 것이라는 것을 안다. 왜냐하면 인터넷의 상당 부분은 PHP에서 실행되기 때문에 모든 것을 파괴할 것이다.
그래서 브라운슨의 게시물은 나로 하여금'새로운 PHP'가 필요하지 않을 수도 있고, ES6 for PHP가 필요할 수도 있다. PHP 위에 있는 층이 필요할 수도 있다. 우리가 문제를 해결하고 서로 다른 PHP를 작성하는 동시에 호환성을 유지할 수 있도록 허락해 준다.

배경.
나는 언어 디자이너도 아니고 새로운 프로그래밍 언어를 구축하는 데 즐거움을 찾는 사람도 아니다.하지만 나는 꿈꾸는 사람이다. 나는 꿈을 꾸어도 된다.
PHP의 가장 큰 골칫거리 중 하나는 표준 라이브러리의 불일치입니다.이것은 실제적으로 하나의 특성이지 버그가 아니다.라스마스 러도프가 이런 언어를 만들었을 때he used different kind of naming schemes to balance the function hashing.

Well, there were other factors in play there. htmlspecialchars was a very early function. Back when PHP had less than 100 functions and the function hashing mechanism was strlen(). In order to get a nice hash distribution of function names across the various function name lengths names were picked specifically to make them fit into a specific length bucket. This was circa late 1994 when PHP was a tool just for my own personal use and I wasn't too worried about not being able to remember the few function names.


하지만 2019년인데도 많은 PHP가 여전히 집필 중이다.우리가 더 재밌게 할 수 있다면?(저는 Ruby와 Ruby on Rails를 즐겨 씁니다. DHHThe Rails Doctrine는 제 영감의 원천입니다.특히 개발자의 행복에 관한 부분.)
그럼 저희가 뭘 해야 될까요?

표준 라이브러리 이름의 일관성 레이어
위의 인용문에서 알 수 있듯이 PHP 함수의 명칭은 특정한 목적이 있다. 바로 균형 산열 함수이다.이것은 표준 라이브러리의 발전에 따라 함수 이름을 어떻게 쓰는지 기억할 수 없다는 것을 의미한다. 왜냐하면 일치성이 없기 때문이다.
있다strpos. 하지만str_rot13.있다php_uname. 하지만phpversion.있다strtolower. 하지만bin2hex.그리고str_shuffle 하지만recode_string.너는 아마 이 점을 이해할 것이다.
따라서 첫 번째 행동 계획은 일치하고 예측 가능한 명명 방안을 만드는 것이다

수조 함수를 수조 방법으로 바꾸다
어디 보자.만약 우리가 하나의 값 그룹을 가지고 있다면, 우리는 먼저 필터를 한 다음에 비추려고 한다.vanilla PHP 에서는 다음과 같은 작업을 수행할 수 있습니다.
array_map(
  function(number) {
    return number * 2;
  },
  array_filter(
    [1,2,3,4,5,6,7,8,9,10],
    function(number) {
      return number % 2 == 0;
    })
);
array_map의 매개 변수는 callback, array와 같고, array_filter의 매개 변수는 array, callback와 같다는 것을 주의하십시오.나는 왜 그것들이 완전히 상반되는지 모르겠지만, 더 많은 경우, 나는 어느 것이 어느 것인지 기억하지 못하기 때문에, 나는 어쩔 수 없이 의사에게 도움을 청해야 한다.이 밖에도 둥지가 무거워 따라잡기 어렵다.
어떻게 하면 그것을 더욱 좋아지게 할 수 있는지 봅시다.
array(1,2,3,4,5,6,7,8,9,10)
  ->filter(num -> num % 2 == 0)
  ->map(num -> num * 2)
수조 함수를 수조 자체로 바꾸는 방법으로 우리는 사물을 연결할 수 있다.비록 우리가 익명 함수에 대해 ES6 스타일의 화살표 함수를 사용하고 싶지 않더라도, 이것은 코드를 더욱 쉽게 이해하고 준비할 수 있게 할 것이다.
두 번째 행동 계획: array_ 함수를 그룹 방법으로 변환한 다음 링크 가능

그들 모두를 통치하는 방식
그럼 분류는요?현재 PHP의 서열은 매우 혼란스럽습니다.2015년으로 돌아가면 a blog post about my pain with them라고 썼다.내 말을 인용하다.

There’s of course sort. Instead of giving a flag or parameter to sort to reverse the order, you have rsort. Then if you want to keep the key=>value pairs intact, there’s asort (which has caused me most confusions ever since I accidentally used that one instead of sort) and arsort. Then you can sort with keys ksort and reverse krsort. For natural sorting there’s natsort and case insensitive natcasesort. And when all this is not enough, you can use custom defined comparing function with usort, uasort and uksort. And the inconsistently named array_multisort for multidimensional arrays.


반대로, 우리는 sort() 함수만 있으면, 로고, 키, 사용자 정의 리셋을 사용할 수 있습니다.sort의 부작용이 아니라, 그룹을 되돌려 주는 옵션을 제공해 주십시오.대부분의 PHP 프로젝트에서 내가 만든 첫 번째 사용자 정의 함수 중 하나는 sorted 함수 (이름은 Python에서 빌려온 것) 인데, 이것은 나의 기능을 더욱 강하게 한다.
세 번째 행동 계획: 통일 분류

분리 시퀀스 그룹과 관련 그룹
당신은 PHP가 관련 수조만 있는 것을 아십니까?PHP 분야에서 일할 때는 잘 일하지만, JSON으로 전환하기 시작하면 문제를 발견할 수 있다.Another one of my blog posts from last year 이 문제를 강조했다.

If you sort an array with numeric, sequential and unordered keys, you turn from object to an array. If you sort an array with numeric, sequential and ordered keys, it remains an array. Whatever you do for non-numeric or non-sequential array, it will stay an object.


내가 코드를 읽거나 작성할 때, 나는 결과를 더욱 일치하게 이해할 수 있어야 한다.array_values를 사용하여'서열 그룹이 관련 그룹으로 바뀌면'을 리셋하는 것은 무섭다.
네 번째 행동 계획: 단독 그룹 유형

결론
표준고에는'ES6 치료'에서 이득을 볼 수 있는 다른 부분도 있을 수 있지만, 내 인생에서 PHP 개발 사용에 대한 가장 큰 고통은 이것들이다.
다시 살펴보겠습니다.
  • 정합성 보장 명명
  • 수조 함수를 링크 가능한 수조로 변환하는 방법
  • 1종, 더 이상 없음
  • 어레이 2개가 1개보다 우수
  • ES6 for PHP 솔루션에서 향상된 PHP의 어떤 부분을 원하십니까?
    2월 9일 편집
    이 아이디어가 마음에 드시면 클릭해 보세요php-next project

    좋은 웹페이지 즐겨찾기