Я ищу решение для использования подсказок типа в потоке ресурсов stream_socket_client()
.
Исследуя эту топи c, я наткнулся на этот вопрос и его принятый ответ , что как-то подразумевает, что то, что я ищу, не может быть сделано без отхода от stream_socket_client()
, потому что stream_socket_client()
возвращает resource
типа stream
. И хотя resource
является примитивным типом, он не поддерживается хинтингом скалярных типов в PHP.
Однако, возможно, кто-то знает, как это сделать, или получил альтернативу stream_socket_client()
, которая работает с хинтингом типов.
Ниже вы найдете класс Email
, разбитый до самого базового c кода, с которым можно работать, и чтобы дать вам представление о том, как я использую stream_socket_client()
.
class Email {
private /* WHAT TYPE HINT TO PUT HERE? */ $_connection = null;
public function sendEmail() {
// set email server details
$smtpServer = // set your smtp server address
$smtpPort = // set your smtp server port;
// context options for ssl connection
$contextOptions = array(
'ssl' => array(
'verify_peer' => true,
'verify_peer_name' => true
)
);
$context = stream_context_create($contextOptions);
// establish connection
$this->_connection = stream_socket_client("tcp://$smtpServer:$smtpPort", $error_no, $error_str, 20, STREAM_CLIENT_CONNECT, $context);
// enable TLS
stream_socket_enable_crypto($this->_connection, true, STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT)
/* in the real world, you'd wanna make sure the connection has been established,
enabling crypto succeeded and afterwards send the email by writing smtp commands to the stream */
}
}
Я использую PHP 7.4, на случай, если это имеет значение.