2015-01-03 2 views
3

Я написал этот крошечный скрипт, чтобы поменять цвета на тему Numix для Ubuntu Gnome:PHP консольных аргументы скрипта/передача по умолчанию/рефакторинга Еореп() Fread() FWRITE() fclose()

<?php 
$oldColor = $argv[1]; 
$newColor = $argv[2]; 
// defaults 
// $oldColor = 'd64937'; 
// $newColor = 'f66153'; 

$path = '/usr/share/themes/Numix/gtk-3.0/gtk-dark.css'; 
$fileRead = fopen($path, 'r'); 
$contents = fread($fileRead, filesize($path)); 
$newContents = str_replace($oldColor, $newColor, $contents); 
$fileWrite = fopen($path, 'w'); 
fwrite($fileWrite, $newContents); 
fclose($fileWrite); 
?> 

Сценарий работает по назначению, пока я передаю два аргумента.

  1. Как установить значения по умолчанию для аргументов?
  2. Должен ли рефакторинг, возможно, использовать file_put_contents()?
+0

Вы можете проверить с 'пустым()', если задано значение, и если не установлен по умолчанию один, также 'file_get_contents()' и 'file_put_contents()' не плохой способ, так попробовать ! Попытайтесь решить это самостоятельно, если вы застряли, скажите это. – Rizier123

+0

Пожалуйста, объясните свой второй вопрос. Почему это вариант? – honk

+1

@ Rizier123 Спасибо, это сработало. – RichardForrester

ответ

3
<?php 
// How do I set defaults for the arguments? 
$oldColor = !empty($argv[1]) ? $argv[1] : 'd64937'; 
$newColor = !empty($argv[2]) ? $argv[2] : 'f66153'; 
$file = '/usr/share/themes/Numix/gtk-3.0/gtk-dark.css'; 

// Your choice whether its cleaner, I think so. 
file_put_contents(
    $file, 
    str_replace(
     $oldColor, 
     $newColor, 
     file_get_contents($file) 
    ) 
); 
?> 
+0

Спасибо, Мне нужно изучить это на минуту. – RichardForrester

1

Я собираюсь изучить ответ LoZ Cherone, который является немного передовые для меня (это мой первый сценарий), но я придумал что-то лучше:

<?php 
if (empty($argv[1])) { 
    $oldColor = 'd64937'; 
    $newColor = 'f66153'; 
} elseif (empty($argv[2])) { 
    echo "Please supply new color"; 
    return false; 
} else { 
    $oldColor = $argv[1]; 
    $newColor = $argv[2]; 
} 
$path = '/usr/share/themes/Numix/gtk-3.0/gtk-dark.css'; 
$oldContents = file_get_contents($path); 
$newContents = str_replace($oldColor, $newColor, $oldContents); 
file_put_contents($path, $newContents); 
?> 
0

Это кажется справедливым, чтобы поделиться конечным продуктом для тех, кто там работает с темой Numix на Ubuntu. Просто скопируйте скрипт в файл .php и запустите его как sudo. Сначала создайте резервную копию двух файлов.

<?php 

if (!empty($argv[1]) && empty($argv[2])) { 
    echo "Please supply two colors for your very own custom color swap or zero colors for a slight improvement"; 
    return false; 
} 

$oldColor = !empty($argv[1]) ? $argv[1] : 'd64937'; 
$newColor = !empty($argv[2]) ? $argv[2] : 'f66153'; 
$file_1 = '/usr/share/themes/Numix/gtk-3.0/gtk-dark.css'; 
$file_2 = '/usr/share/themes/Numix/gtk-2.0/gtkrc'; 

file_put_contents(
    $file_1, 
    str_replace(
     $oldColor, 
     $newColor, 
     file_get_contents($file_1) 
    ) 
); 

file_put_contents(
    $file_2, 
    str_replace(
     $oldColor, 
     $newColor, 
     file_get_contents($file_2) 
    ) 
); 
?> 
Смежные вопросы