Pop\Version::check PHP Method

check() public static method

Returns an output of dependencies
public static check ( integer $ret = Version::PLAIN ) : string | array
$ret integer
return string | array
    public static function check($ret = Version::PLAIN)
    {
        // Get include path and define some variables.
        $includePath = explode(PATH_SEPARATOR, get_include_path());
        $isWindows = DIRECTORY_SEPARATOR == '\\' ? true : false;
        $php = array('Required PHP' => '5.3.0', 'Installed PHP' => PHP_VERSION);
        $versionCompare = version_compare($php['Installed PHP'], $php['Required PHP']);
        $check = array();
        // APC
        $check['Apc'] = !function_exists('apc_add') ? 'No' : 'Yes';
        // Archive
        $check['Archive Tar'] = 'No';
        foreach ($includePath as $path) {
            if (file_exists($path . DIRECTORY_SEPARATOR . 'Archive' . DIRECTORY_SEPARATOR . 'Tar.php')) {
                $check['Archive Tar'] = 'Yes';
            }
        }
        $check['Archive Phar'] = !class_exists('Phar', false) ? 'No' : 'Yes';
        $check['Archive Rar'] = !class_exists('RarArchive', false) ? 'No' : 'Yes';
        $check['Archive Zip'] = !class_exists('ZipArchive', false) ? 'No' : 'Yes';
        // Compress
        $check['Compress Bzip2'] = function_exists('bzcompress') ? 'Yes' : 'No';
        $check['Compress Lzf'] = function_exists('lzf_compress') ? 'Yes' : 'No';
        $check['Compress Zlib'] = function_exists('gzcompress') ? 'Yes' : 'No';
        // cURL
        $check['cURL'] = function_exists('curl_init') ? 'Yes' : 'No';
        // DB
        $check['Db MySql'] = function_exists('mysql_connect') ? 'Yes' : 'No';
        $check['Db MySqli'] = class_exists('mysqli') ? 'Yes' : 'No';
        $check['Db Oracle'] = function_exists('oci_connect') ? 'Yes' : 'No';
        $check['Db Pdo'] = class_exists('Pdo', false) ? 'Yes' : 'No';
        $pdoDrivers = class_exists('Pdo', false) ? \PDO::getAvailableDrivers() : array();
        $check['Db Pdo MySQL'] = in_array('mysql', $pdoDrivers) ? 'Yes' : 'No';
        $check['Db Pdo SQLSrv'] = in_array('sqlsrv', $pdoDrivers) ? 'Yes' : 'No';
        $check['Db Pdo PgSQL'] = in_array('pgsql', $pdoDrivers) ? 'Yes' : 'No';
        $check['Db Pdo SQLite'] = in_array('sqlite', $pdoDrivers) ? 'Yes' : 'No';
        $check['Db PgSql'] = function_exists('pg_connect') ? 'Yes' : 'No';
        $check['Db Sqlite'] = class_exists('Sqlite3', false) ? 'Yes' : 'No';
        $check['Db SQLSrv'] = function_exists('sqlsrv_connect') ? 'Yes' : 'No';
        // DOM/XML
        $check['Dom DOMDocument'] = class_exists('DOMDocument', false) ? 'Yes' : 'No';
        $check['Dom SimpleXml'] = class_exists('SimpleXMLElement', false) ? 'Yes' : 'No';
        // FTP
        $check['FTP'] = function_exists('ftp_connect') ? 'Yes' : 'No';
        // GeoIP
        $check['GeoIP'] = 'No';
        if (function_exists('geoip_db_get_all_info')) {
            $yes = 'Yes';
            $databases = geoip_db_get_all_info();
            $count = 0;
            foreach ($databases as $db) {
                if ($db['available']) {
                    $count++;
                }
            }
            $check['GeoIP'] = $yes . ' (' . $count . '/' . count($databases) . ' GeoIP DBs Available)';
        }
        // Image
        $check['Image Gd'] = function_exists('getimagesize') ? 'Yes' : 'No';
        $check['Image Freetype'] = function_exists('imagettftext') ? 'Yes' : 'No';
        $check['Image Imagick'] = class_exists('Imagick', false) ? 'Yes' : 'No';
        // Mcrypt
        $check['Mcrypt'] = function_exists('mcrypt_encrypt') ? 'Yes' : 'No';
        // Memcache
        $check['Memcache'] = class_exists('Memcache', false) ? 'Yes' : 'No';
        // SOAP
        $check['Soap'] = class_exists('SoapClient', false) ? 'Yes' : 'No';
        // Total
        $count = array_count_values($check);
        $total = count($check) - $count['No'] . ' of ' . count($check);
        // Format and return the results
        $results = null;
        switch ($ret) {
            // Build plain text results
            case self::PLAIN:
                // Define colors for a bash terminal
                $green = !$isWindows ? "" : null;
                $yellow = !$isWindows ? "" : null;
                $red = !$isWindows ? "" : null;
                $blue = !$isWindows ? "" : null;
                $endColor = !$isWindows ? "" : null;
                foreach ($php as $key => $value) {
                    if ($key == 'Required PHP') {
                        $value = $yellow . $value . $endColor;
                    } else {
                        $value = $versionCompare < 0 ? $red . $value . $endColor : $green . $value . $endColor;
                    }
                    $results .= $key . ': ' . $value . PHP_EOL;
                }
                $results .= '------------------' . PHP_EOL;
                foreach ($check as $key => $value) {
                    $value = stripos($value, 'Yes') !== false ? $green . $value . $endColor : $red . $value . $endColor;
                    $results .= $key . ': ' . $value . PHP_EOL;
                }
                $results .= '------------------' . PHP_EOL;
                $results .= 'Total: ' . $blue . $total . $endColor . PHP_EOL;
                break;
                // Build HTML results
            // Build HTML results
            case self::HTML:
                foreach ($php as $key => $value) {
                    if ($key == 'Required PHP') {
                        $color = 'orange';
                    } else {
                        $color = $versionCompare < 0 ? 'red' : 'green';
                    }
                    $results .= $key . ': <strong style="color: ' . $color . ';">' . $value . '</strong><br />' . PHP_EOL;
                }
                $results .= '<hr />' . PHP_EOL;
                foreach ($check as $key => $value) {
                    $color = $value == 'No' ? 'red' : 'green';
                    $results .= $key . ': <strong style="color: ' . $color . ';">' . $value . '</strong><br />' . PHP_EOL;
                }
                $results .= '<hr />' . PHP_EOL;
                $results .= 'Total: <strong style="color: blue;">' . $total . '</strong>' . PHP_EOL;
                break;
                // Build the results as PHP data
            // Build the results as PHP data
            case self::DATA:
                $data = array();
                foreach ($php as $key => $value) {
                    $k = str_replace(' ', '', $key);
                    $k = strtolower(substr($k, 0, 1)) . substr($k, 1);
                    $data[$k] = $value;
                }
                foreach ($check as $key => $value) {
                    if (strpos($key, ' ') !== false) {
                        $k = str_replace(' ', '', $key);
                        $k = strtolower(substr($k, 0, 1)) . substr($k, 1);
                    } else {
                        $k = strtolower($key);
                    }
                    $data[$k] = $value;
                }
                $results = new \ArrayObject($data, \ArrayObject::ARRAY_AS_PROPS);
                break;
        }
        return $results;
    }

Usage Example

Example #1
0
 public function testCheck()
 {
     $results = Version::check();
     $results = Version::check(Version::HTML);
     $results = Version::check(Version::DATA);
     $this->assertGreaterThan(0, count($results));
 }
All Usage Examples Of Pop\Version::check