Class Socket
CakePHP network socket connection class.
Core base class for network communication.
Property Summary
-
$_config protected
array
Runtime config
-
$_configInitialized protected
bool
Whether the config property has already been configured with defaults
-
$_connectionErrors protected
array
Used to capture connection warnings which can happen when there are SSL errors for example.
-
$_defaultConfig protected
array
Default configuration settings for the socket connection
-
$_encryptMethods protected
array
Contains all the encryption methods available
-
$connected public
bool
This boolean contains the current state of the Socket class
-
$connection public
resource|null
Reference to socket connection resource
-
$description public
string
Object description
-
$encrypted public
bool
True if the socket stream is encrypted after a Cake\Network\Socket::enableCrypto() call
-
$lastError public
array
This variable contains an array with the last error number (num) and string (str)
Method Summary
-
__construct() public
Constructor.
-
__destruct() public
Destructor, used to disconnect from current connection.
-
_configDelete() protected
Deletes a single config key.
-
_configRead() protected
Reads a config key.
-
_configWrite() protected
Writes a config key.
-
_connectionErrorHandler() protected
socket_stream_client() does not populate errNum, or $errStr when there are connection errors, as in the case of SSL verification failure.
-
_getStreamSocketClient() protected
Create a stream socket client. Mock utility.
-
_setSslContext() protected
Configure the SSL context options.
-
address() public
Get the IP address of the current connection.
-
addresses() public
Get all IP addresses associated with the current connection.
-
config() public deprecated
Gets/Sets the config.
-
configShallow() public
Merge provided config with existing config. Unlike
config()
which does a recursive merge for nested keys, this method does a simple merge. -
connect() public
Connect the socket to the given host and port.
-
context() public
Get the connection context.
-
disconnect() public
Disconnect the socket from the current connection.
-
enableCrypto() public
Encrypts current stream socket, using one of the defined encryption methods
-
getConfig() public
Returns the config.
-
getConfigOrFail() public
Returns the config for this specific key.
-
host() public
Get the host name of the current connection.
-
lastError() public
Get the last error as a string.
-
read() public
Read data from the socket. Returns false if no data is available or no connection could be established.
-
reset() public
Resets the state of this Socket instance to it's initial state (before Object::__construct got executed)
-
setConfig() public
Sets the config.
-
setLastError() public
Set the last error.
-
write() public
Write data to the socket.
Method Detail
__construct() ¶ public
__construct(array $config = [])
Constructor.
Parameters
-
array
$config optional Socket configuration, which will be merged with the base configuration
See Also
_configDelete() ¶ protected
_configDelete(string $key): void
Deletes a single config key.
Parameters
-
string
$key Key to delete.
Returns
void
Throws
Cake\Core\Exception\Exception
if attempting to clobber existing config
_configRead() ¶ protected
_configRead(string|null $key): mixed
Reads a config key.
Parameters
-
string|null
$key Key to read.
Returns
mixed
_configWrite() ¶ protected
_configWrite(string|array $key, mixed $value, bool|string $merge = false): void
Writes a config key.
Parameters
-
string|array
$key Key to write to.
-
mixed
$value Value to write.
-
bool|string
$merge optional True to merge recursively, 'shallow' for simple merge, false to overwrite, defaults to false.
Returns
void
Throws
Cake\Core\Exception\Exception
if attempting to clobber existing config
_connectionErrorHandler() ¶ protected
_connectionErrorHandler(int $code, string $message): void
socket_stream_client() does not populate errNum, or $errStr when there are connection errors, as in the case of SSL verification failure.
Instead we need to handle those errors manually.
Parameters
-
int
$code Code number.
-
string
$message Message.
Returns
void
_getStreamSocketClient() ¶ protected
_getStreamSocketClient(string $remoteSocketTarget, int $errNum, string $errStr, int $timeout, int $connectAs, resource $context): bool|resource
Create a stream socket client. Mock utility.
Parameters
-
string
$remoteSocketTarget remote socket
-
int
$errNum error number
-
string
$errStr error string
-
int
$timeout timeout
-
int
$connectAs flags
-
resource
$context context
Returns
bool|resource
_setSslContext() ¶ protected
_setSslContext(string $host): void
Configure the SSL context options.
Parameters
-
string
$host The host name being connected to.
Returns
void
addresses() ¶ public
addresses(): array
Get all IP addresses associated with the current connection.
Returns
array
config() ¶ public
config(string|array|null $key = null, mixed|null $value = null, bool $merge = true): mixed
Gets/Sets the config.
Usage
Reading the whole config:
$this->config();
Reading a specific value:
$this->config('key');
Reading a nested value:
$this->config('some.nested.key');
Setting a specific value:
$this->config('key', $value);
Setting a nested value:
$this->config('some.nested.key', $value);
Updating multiple config settings at the same time:
$this->config(['one' => 'value', 'another' => 'value']);
Parameters
-
string|array|null
$key optional The key to get/set, or a complete array of configs.
-
mixed|null
$value optional The value to set.
-
bool
$merge optional Whether to recursively merge or overwrite existing config, defaults to true.
Returns
mixed
Throws
Cake\Core\Exception\Exception
When trying to set a key that is invalid.
configShallow() ¶ public
configShallow(string|array $key, mixed|null $value = null): $this
Merge provided config with existing config. Unlike config()
which does
a recursive merge for nested keys, this method does a simple merge.
Setting a specific value:
$this->configShallow('key', $value);
Setting a nested value:
$this->configShallow('some.nested.key', $value);
Updating multiple config settings at the same time:
$this->configShallow(['one' => 'value', 'another' => 'value']);
Parameters
-
string|array
$key The key to set, or a complete array of configs.
-
mixed|null
$value optional The value to set.
Returns
$this
connect() ¶ public
connect(): bool
Connect the socket to the given host and port.
Returns
bool
Throws
Cake\Network\Exception\SocketException
disconnect() ¶ public
disconnect(): bool
Disconnect the socket from the current connection.
Returns
bool
enableCrypto() ¶ public
enableCrypto(string $type, string $clientOrServer = 'client', bool $enable = true): bool
Encrypts current stream socket, using one of the defined encryption methods
Parameters
-
string
$type can be one of 'ssl2', 'ssl3', 'ssl23' or 'tls'
-
string
$clientOrServer optional can be one of 'client', 'server'. Default is 'client'
-
bool
$enable optional enable or disable encryption. Default is true (enable)
Returns
bool
Throws
InvalidArgumentException
When an invalid encryption scheme is chosen.
Cake\Network\Exception\SocketException
When attempting to enable SSL/TLS fails
See Also
getConfig() ¶ public
getConfig(string|null $key = null, mixed|null $default = null): mixed|null
Returns the config.
Usage
Reading the whole config:
$this->getConfig();
Reading a specific value:
$this->getConfig('key');
Reading a nested value:
$this->getConfig('some.nested.key');
Reading with default value:
$this->getConfig('some-key', 'default-value');
Parameters
-
string|null
$key optional The key to get or null for the whole config.
-
mixed|null
$default optional The return value when the key does not exist.
Returns
mixed|null
getConfigOrFail() ¶ public
getConfigOrFail(string|null $key): mixed
Returns the config for this specific key.
The config value for this key must exist, it can never be null.
Parameters
-
string|null
$key The key to get.
Returns
mixed
Throws
InvalidArgumentException
read() ¶ public
read(int $length = 1024): mixed
Read data from the socket. Returns false if no data is available or no connection could be established.
The bool false return value is deprecated and will be null in the next major. Please code respectively to be future proof.
Parameters
-
int
$length optional Optional buffer length to read; defaults to 1024
Returns
mixed
reset() ¶ public
reset(array|null $state = null): bool
Resets the state of this Socket instance to it's initial state (before Object::__construct got executed)
Parameters
-
array|null
$state optional Array with key and values to reset
Returns
bool
setConfig() ¶ public
setConfig(string|array $key, mixed|null $value = null, bool $merge = true): $this
Sets the config.
Usage
Setting a specific value:
$this->setConfig('key', $value);
Setting a nested value:
$this->setConfig('some.nested.key', $value);
Updating multiple config settings at the same time:
$this->setConfig(['one' => 'value', 'another' => 'value']);
Parameters
-
string|array
$key The key to set, or a complete array of configs.
-
mixed|null
$value optional The value to set.
-
bool
$merge optional Whether to recursively merge or overwrite existing config, defaults to true.
Returns
$this
Throws
Cake\Core\Exception\Exception
When trying to set a key that is invalid.
setLastError() ¶ public
setLastError(int $errNum, string $errStr): void
Set the last error.
Parameters
-
int
$errNum Error code
-
string
$errStr Error string
Returns
void
write() ¶ public
write(string $data): int|false
Write data to the socket.
The bool false return value is deprecated and will be int 0 in the next major. Please code respectively to be future proof.
Parameters
-
string
$data The data to write to the socket.
Returns
int|false
Property Detail
$_configInitialized ¶ protected
Whether the config property has already been configured with defaults
Type
bool
$_connectionErrors ¶ protected
Used to capture connection warnings which can happen when there are SSL errors for example.
Type
array
$_encryptMethods ¶ protected
Contains all the encryption methods available
SSLv2 and SSLv3 are deprecated, and should not be used as they have several published vulnerablilities.
Type
array
$encrypted ¶ public
True if the socket stream is encrypted after a Cake\Network\Socket::enableCrypto() call
Type
bool
$lastError ¶ public
This variable contains an array with the last error number (num) and string (str)
Type
array