유틸리티 함수 인 경우 별도의 네임 스페이스에 정의하십시오.
<?php
namespace Utils;
function array_query($array, $query) {
// code for traversing the array
}
하나 이상의 파일에 넣어두면 좋습니다. 해당 파일을 앱의 부스트랩 단계에 포함시키는 것을 잊지 마십시오.
하단 : 정적 클래스를 악용하는 것을 중지하려면 해당 sh * t의 네임 스페이스가 있어야합니다.
그러나 "유틸리티 기능"이라고 생각하는 것이 전부는 아닙니다. OOP 코드를 사용하기 시작하면 일부 코드는 연관된 클래스로 이동해야합니다. "이메일 확인"은 "유틸리티 기능"에 가야하지만, 안 예를 들어, 클래스 : 다음 입력 - 힌트 수
class EmailAddress {
private $emailAddress;
public function __construct($emailAddress) {
$this->assertValidEmailAddress($emailAddress);
$this->emailAddress = $emailAddress;
}
private function assertValidEmailAddress($emailAddress) {
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
throw new DomainException("Not an email address");
}
}
public function __toString() {
return $this->emailAddress;
}
}
그리고 분리 된 실체에 가야한다 반복 "도메인 로직"조각 이런 종류의, 다른 클래스들에 대해서. 당신의
public function register(EmailAddress $email, SafePassword $password): User
{
// your user registration logic
}
이 방법은 다양한 서비스 활동을 수행 할 수 있습니다 당신이 개선 확인을 위해 try-catch
를 사용 : 그런 다음 당신은 어딘가에을 사용합니다.
P.
자신이하는 일에 대해 자세히 살펴볼 필요가있을 수 있습니다. 그 점선 액세스 유틸리티는 (나는 10 년 전에도 마찬가지였다.) 실제로는 더 깊은 문제에 대한 "임시 수정"이다 : 당신은 그것들을 액세스하는 것을 단순화 할 필요가있다.
문제가 있거나 특성으로 해결할 수있는 경우 잘못된 문제를 해결할 수 있습니다. 또한, 단지 공유 부모로부터 확장하여 중복 코드를 격리하는 것은 (실제로 유혹적이지만) 나쁜 생각입니다. 종종 코드가 리팩토링되어야하고 모든 특수 클래스에 공통적 인 종속성을 추출해야한다는 표시가 더 자주 나타납니다. –