Class Socket
CakePHP network socket connection class.
Core base class for network communication.
- Cake\Network\Socket uses Cake\Core\InstanceConfigTrait
Properties summary
-
$_connectionErrors
protectedarray
Used to capture connection warnings which can happen when there are SSL errors for example.
-
$_defaultConfig
protectedarray
Default configuration settings for the socket connection -
$_encryptMethods
protectedarray
Contains all the encryption methods available -
$connected
publicboolean
This boolean contains the current state of the Socket class -
$connection
publicresource|null
Reference to socket connection resource -
$description
publicstring
Object description -
$encrypted
publicboolean
True if the socket stream is encrypted after a Cake\Network\Socket::enableCrypto() call -
$lastError
publicarray
This variable contains an array with the last error number (num) and string (str)
Inherited Properties
Method Summary
-
__construct() public
Constructor. -
__destruct() public
Destructor, used to disconnect from current connection. -
_connectionErrorHandler() protected
socket_stream_client() does not populate errNum, or $errStr when there are connection errors, as in the case of SSL verification failure.
-
_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. -
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 -
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) -
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
_connectionErrorHandler() protected ¶
_connectionErrorHandler( integer $code , string $message )
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
- integer $code
- Code number.
- string $message
- Message.
_setSslContext() protected ¶
_setSslContext( string $host )
Configure the SSL context options.
Parameters
- string $host
- The host name being connected to.
address() public ¶
address( )
Get the IP address of the current connection.
Returns
IP address
addresses() public ¶
addresses( )
Get all IP addresses associated with the current connection.
Returns
IP addresses
connect() public ¶
connect( )
Connect the socket to the given host and port.
Returns
Success
Throws
context() public ¶
context( )
Get the connection context.
Returns
Null when there is no connection, an array when there is.
disconnect() public ¶
disconnect( )
Disconnect the socket from the current connection.
Returns
Success
enableCrypto() public ¶
enableCrypto( string $type , string $clientOrServer 'client' , boolean $enable true )
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 'client'
- can be one of 'client', 'server'. Default is 'client'
- boolean $enable optional true
- enable or disable encryption. Default is true (enable)
Returns
True on success
Throws
When an invalid encryption scheme is chosen.
Cake\Network\Exception\SocketException
When attempting to enable SSL/TLS fails
See
read() public ¶
read( integer $length 1024 )
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
- integer $length optional 1024
- Optional buffer length to read; defaults to 1024
Returns
Socket data
reset() public ¶
reset( array|null $state null )
Resets the state of this Socket instance to it's initial state (before Object::__construct got executed)
Parameters
- array|null $state optional null
- Array with key and values to reset
Returns
True on success
setLastError() public ¶
setLastError( integer $errNum , string $errStr )
Set the last error.
Parameters
- integer $errNum
- Error code
- string $errStr
- Error string
Methods used from Cake\Core\InstanceConfigTrait
_configDelete() protected ¶
_configDelete( string $key )
Deletes a single config key.
Parameters
- string $key
- Key to delete.
Throws
_configRead() protected ¶
_configRead( string|null $key )
Reads a config key.
Parameters
- string|null $key
- Key to read.
Returns
_configWrite() protected ¶
_configWrite( string|array $key , mixed $value , boolean|string $merge false )
Writes a config key.
Parameters
- string|array $key
- Key to write to.
- mixed $value
- Value to write.
- boolean|string $merge optional false
True to merge recursively, 'shallow' for simple merge, false to overwrite, defaults to false.
Throws
config() public ¶
config( string|array|null $key null , mixed|null $value null , boolean $merge true )
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']);
Deprecated
Parameters
- string|array|null $key optional null
- The key to get/set, or a complete array of configs.
- mixed|null $value optional null
- The value to set.
- boolean $merge optional true
- Whether to recursively merge or overwrite existing config, defaults to true.
Returns
Config value being read, or the object itself on write operations.
Throws
configShallow() public ¶
configShallow( string|array $key , mixed|null $value null )
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 null
- The value to set.
Returns
$this
getConfig() public ¶
getConfig( string|null $key null , mixed $default 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 null
- The key to get or null for the whole config.
- mixed $default optional null
- The return value when the key does not exist.
Returns
Config value being read.
setConfig() public ¶
setConfig( string|array $key , mixed|null $value null , boolean $merge true )
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 null
- The value to set.
- boolean $merge optional true
- Whether to recursively merge or overwrite existing config, defaults to true.
Returns
$this
Throws
Properties detail
$_connectionErrors ¶
Used to capture connection warnings which can happen when there are SSL errors for example.
[]
$_defaultConfig ¶
Default configuration settings for the socket connection
[ 'persistent' => false, 'host' => 'localhost', 'protocol' => 'tcp', 'port' => 80, 'timeout' => 30 ]
$_encryptMethods ¶
Contains all the encryption methods available
SSLv2 and SSLv3 are deprecated, and should not be used as they have several published vulnerablilities.
[ // @codingStandardsIgnoreStart // @deprecated Will be removed in 4.0.0 'sslv2_client' => STREAM_CRYPTO_METHOD_SSLv2_CLIENT, // @deprecated Will be removed in 4.0.0 'sslv3_client' => STREAM_CRYPTO_METHOD_SSLv3_CLIENT, 'sslv23_client' => STREAM_CRYPTO_METHOD_SSLv23_CLIENT, 'tls_client' => STREAM_CRYPTO_METHOD_TLS_CLIENT, 'tlsv10_client' => STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT, 'tlsv11_client' => STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT, 'tlsv12_client' => STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT, // @deprecated Will be removed in 4.0.0 'sslv2_server' => STREAM_CRYPTO_METHOD_SSLv2_SERVER, // @deprecated Will be removed in 4.0.0 'sslv3_server' => STREAM_CRYPTO_METHOD_SSLv3_SERVER, 'sslv23_server' => STREAM_CRYPTO_METHOD_SSLv23_SERVER, 'tls_server' => STREAM_CRYPTO_METHOD_TLS_SERVER, 'tlsv10_server' => STREAM_CRYPTO_METHOD_TLSv1_0_SERVER, 'tlsv11_server' => STREAM_CRYPTO_METHOD_TLSv1_1_SERVER, 'tlsv12_server' => STREAM_CRYPTO_METHOD_TLSv1_2_SERVER // @codingStandardsIgnoreEnd ]
$encrypted ¶
True if the socket stream is encrypted after a Cake\Network\Socket::enableCrypto() call
false
$lastError ¶
This variable contains an array with the last error number (num) and string (str)
[]