public function remove() { if (!$this->isInstalled()) { echo " {$this->getName()} is not installed.\n"; return; } if (!empty($this->dependents)) { /** @var Component $dependent */ foreach ($this->dependents as $dependent) { if (ComponentManager::getInstance()->getComponent($dependent)->isInstalled()) { echo " {$this->getName()} is still needed.\n"; return; } } } echo " Removing {$this->getName()}\n"; $this->installed = false; /** @var Component $dependency */ foreach ($this->dependencies as $dependency) { /** @var Component $component */ $component = ComponentManager::getInstance()->getComponent($dependency); foreach ($component->getDependents() as $dependent) { if (ComponentManager::getInstance()->getComponent($dependent)->isInstalled()) { return; } } if (!$component->explicitInstall) { $component->remove(); } } }
case 'INSTALL': //install component $componentManager->getComponent($keywords[1])->install(true); break; case 'REMOVE': //remove component $componentManager->getComponent($keywords[1])->remove(); break; case 'LIST': //list installed components $componentManager->listInstalledComponents(); break; case 'END': //end of input break; } } if (!feof($handle)) { echo "Error: unexpected fgets() fail\n"; } echo "\n"; fclose($handle); //var_dump($componentManager->getComponents()); } } } if (file_exists($_SERVER['argv'][1])) { ComponentManager::getInstance()->main(); } else { echo "The file {$_SERVER['argv'][1]} does not exist\n"; }