3
\$\begingroup\$

This function checks these 6 fields for a user profile to determine if they have "completed" their profile. This just feels like it could be done better, but I can't figure how.

/**
 * Is the user's entire profile filled in?
 *
 * @return boolean
 */
public function isProfileComplete()
{
    $checkList = [
        $this->isAddressGiven(),
        $this->isGenderSelected(),
        null !== $this->getFirstName(),
        null !== $this->getLastName(),
        null !== $this->getJobTitle(),
        null !== $this->getAboutMe(),
    ];

    // If any one of the checks fails, profile is missing information
    foreach ($checkList as $checkItem) {
        if (!$checkItem) {
            return false;
        }
    }

    return true;
}
\$\endgroup\$
4
\$\begingroup\$

There's no sense in creating a dynamic array for a fixed set of checks. Just put them in a single boolean expression.

public function isProfileComplete()
{
    return $this->isAddressGiven()
        && $this->isGenderSelected()
        && null !== $this->getFirstName()
        && null !== $this->getLastName()
        && null !== $this->getJobTitle() 
        && null !== $this->getAboutMe()
        ;
}
\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.