상현에 하루하루

PHP

PHP 8.1: 배열 풀기

PHP의 배열 해제는 PHP 7.4부터 포함되어 있었지만 제한사항이 있었습니다. 숫자 키가 있는 배열만 허용되는 것입니다. 그래서 아래 코드는 이미 가능했었습니다. 하지만 아래 코드는 PHP 8.1 이전 버전에서는 정상적으로 동작하지 않았죠 하지만 이제는 이렇게 작동합니다. 그런데 문자열 키를 사용한 배열의 해제가 작동하는 방식은 array_merge의 작동 방식과 정확히 동일합니다. 즉, 동일한 키를 가진 배열의 해제에 대해 새로 … Continued

PHP8.1: First-Class Callables

PHP 8.1에서 호출 가능한 구문을 작성하는 새로운 방법인 First-Class 호출 이전에는 다음과 같이 작성할 수 있었습니다. 즉, 다른 종류의 함수를 참조하는 클로저를 생성하여 해당 클로저를 변수로 사용할 수 있습니다. 이것은 내가 성가신 부분이었습니다. 실제 함수를 참조하는 데 사용되는 ‘문자열’ 이름과 배열에 대해 이야기하는 것입니다. 이러한 클로저를 생성하기 위한 적절한 내장 구문입니다! 다음과 같이 생성하면 됩니다. … Continued

PHP 8.1: Enums

PHP8.1에는 Enums가 추가됩니다. 열거형의 이점은 상수 값의 컬렉션을 나타내지만 가장 중요한 것은 이러한 값을 다음과 같이 입력할 수 있다는 것입니다. 이 예에서 열거형을 만들고 전달하면 BlogPost는 다음과 같습니다. 열거형에 대해 자세히 살펴보겠습니다! Enum methods 열거형은 클래스와 마찬가지로 메서드를 정의할 수 있습니다. 이것은 특히 match 연산자와 함께 사용할 때 매우 강력한 기능입니다. 방법은 다음과 같이 사용할 … Continued

repeater필드의 서브 필드 업데이트 (type file)

위와 같이 첨부파일이라는 Repeater 필드가있다. PHP 코드로 커스텀한 포스트를 만들고 해당 포스트의 커스텀 필드의 값을 업데이트하려면 어떻게해야할까? 커스텀 포스트를 PHP 코드에서 생성하기 이렇게 임시글 상태의 포스트를 생성한다. 업로드할 파일을 미디어에 추가한다 위와 같이 미디어에 업로드를하고 $new_post 포스트의 데이터를 넣어서 어떤 포스트에서 업로드된 미디어 파일로 설정하였다.그렇다면 $new_post에 repeater 필드를 어떻게 업데이트할까? Repeater 필드 업데이트하기 위 예제를 … Continued

PHP 8.1 설치

PHP 8.1은 2021년 11월 25일에 출시될 예정입니다. brew로 PHP를 설치할 것이고 Brew 버전이 최신 상태인지 확인 다음으로 PHP 8.1이 포함된 저장소를 설치 마지막으로 PHP 8.1을 설치 및 실행 PHP 8.1을 사용하고 있는지 확인

namespace와 use

namespace와 use는 무엇이냐 하면 C#에서의 namespace와 using과 같고 Java에서의 package와 import와 같은 개념입니다. 점차 프로젝트가 커지고 많은 라이브러리를 참조해서 사용하는 프로젝트에서 클래스 명이 전부 독립적으로 사용될 수는 없습니다. 예를 들어 두 종류의 데이터베이스를 사용하는 시스템이라하면 mssql 과 oracle이라 가정하면 mssql connection 클래스와 oracle connection 클래스가 있을 때 이 두 클래스 이름은 Connection으로 같은 이름이라고 하면 … Continued

Class 다이나믹 메소드 네임

get_post()로 얻은 WP_Post 타입의 특정 키값? 메소드에 원하는 데이터를 저장해야할 일이 생겼다. 위처럼 있다했을때 key: value쌍이 백만개라면 일일이 할 수 없다. 그럼 이때 어떻개 할 수 있나? PHP에 대해 동일한 클래스이 메소드를 동적으로 호출하는 방법. 위처럼 구현해도 되고 Reflection class를 사용해도 된다. PHP: Reflection – Manual

포스트 배열 병합후 재정렬

개별 get_posts()로 가져온 posts의 배열을 병합하게되면 순서가 변경되지 않으므로 직접 정렬해야합니다. PHP >= 7 php의 usort를 사용하고 익명함수에서 “spaceship operator” <=> 를 사용하여 비교후 원하는 값을 도출해낼수 있습니다. 일반적으로 return $a-value <=> $b->value; 결과를 오름차순으로 반환하는 데 사용하지만필자는 날짜를 기순으로 최신 항목으로 정렬되기를 원하므로 비교를 반대로 했습니다.return $b->value <=> $a->value; 이렇게 재정렬된 get_posts 객체의 배열을 … Continued

composer install 오류 php 버전문제

모던 PHP에서는 PHP의 패키지 매니저인 composer를 사용한다. composer는 PHP의 버전에 따라서 설치할 수 있는지 없는지 결정된다. 특정 패키지는 PHP의 몇 버전이상이어야 한다는 조건이 있다. [문제 발생] 내 서버는 PHP 8.0을 설치할 수 없는데?! 제목 그대로 내 서버는 Synology의 DSM 7.0 버전 DS720+를 사용하고있다.해당 시놀로지는 PHP8.0 패키지를 아직 지원하지 않고있다. 여기서 어떻게 해야할까? 많은 고민을 했다. … Continued

PHP foreach 인덱스

key 변수를 사용하여 PHP에서 foreach 인덱스 찾기 변수 키는 각 값의 인덱스를 foreach 루프에 저장합니다. PHP에서 foreach 루프는 다음과 같이 사용됩니다. 변수 값은 배열의 각 요소 값을 저장합니다. 여기서 중요한 변수는 foreach 루프의 인덱스를 포함합니다. 변수 값은 array의 각 요소 값을 보여줍니다. index 변수를 사용하여 PHP에서 foreach 인덱스 찾기 변수 인덱스는 각 반복에서 foreach 인덱스를 … Continued