for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
namespace Sanchescom\WiFi\System;
/**
* Class AbstractNetwork.
*/
abstract class AbstractNetwork
{
* @var string
public $bssid;
public $ssid;
* @var int
public $channel;
* @var float
public $quality;
public $dbm;
public $security;
public $securityFlags;
public $frequency;
* @var bool
public $connected;
* @var array
protected static $securityTypes = [
'WPA2',
'WPA',
'WEP',
];
* @param string $password
* @param string $device
abstract public function connect(string $password, string $device): void;
abstract public function disconnect(string $device): void;
* @param array $network
*
* @return AbstractNetwork
abstract public static function createFromArray(array $network): self;
* @return string
public function getSecurityType(): string
$securityType = 'Unknown';
foreach (self::$securityTypes as $securityType) {
if (strpos($this->security, $securityType) !== false) {
break;
}
return $securityType;
* @return int
public function getFrequency(): int
return $this->getFrequencyGenerator()->getFrequencyForChannel($this->channel);
public function __toString(): string
return implode('|', [
$this->bssid,
$this->ssid,
$this->quality,
$this->dbm,
$this->security,
$this->securityFlags,
$this->frequency,
var_export($this->connected, true),
]);
* @return FrequencyGenerator
protected function getFrequencyGenerator(): FrequencyGenerator
return new FrequencyGenerator();
* @return float
protected function dBmToQuality(): float
return 2 * ($this->dbm + 100);
protected function qualityToDBm(): float
return ($this->quality / 2) - 100;