Я почти уверен, что это простой фундаментальный недостаток в моем новом знании PHP, но я был удивлен, когда произошло следующее:

$result is TRUE … так почему он считается равным строке «email»? Я предполагаю, что это потому, что, технически, это bool и это не ложь? Поэтому, когда он сравнивается со строкой (например, «электронная почта»), он возвращает true.
Должен ли я изменить свой метод, чтобы он возвращался как результат в виде string содержащей «true» (вместо return true; при успешном завершении), или есть другой способ, которым я должен это делать?
Благодарю.
Да, true равно ( == ) непустой строке. Не идентично ( === ).
Предлагаю вам ознакомиться с таблицей сравнения типов .
Он возвращает true, потому что php попытается преобразовать что-то, чтобы иметь возможность сравнивать их. В этом случае он, вероятно, пытается преобразовать строку с правой стороны в bool, которая в этом случае будет истина. И правда == верно, правда.
Делая $ result === "email" (triple =), вы указываете PHP, что он не делает преобразований и должен возвращать false, если типы не совпадают.
if($result === "email") будет делать трюк, но лично я бы никогда не пошел таким путем.