Как Adam упомянул от кавычки MSDN, UUID являются 128-разрядными значениями. Это означает, что они берут 16 байтов RAM для содержания значения. Текстовое представление возьмет 32 байта (два байта для каждого единственного байта), плюс эти 4 дефиса, плюс две скобки, если Вы захотите включать их; это составляет 38 байтов.
Просто имеют в виду, что, если Вы представляете UUID пользователям Вашего программного обеспечения, они могут предоставить UUID или без скобок. Если Вы храните значение где-нибудь, лучше хранить его как 16-байтовое двоичное представление. Если Вы взаимодействуете с другими реализациями UUID, можно хотеть использовать основной текстовый формат для совместимости, так как различные реализации делают разные вещи для порядка байтов при хранении двоичного значения UUID.
Помните, что вы можете установить значение по умолчанию для своей функции:
function makebackup($table, $dir = CONFIG_BACKUP_PATH)
Таким образом, вам не придется указывать переменную в случае по умолчанию, вы можете просто предположить, что настроенный путь резервного копирования - значение по умолчанию.
Предполагается, что вы используете константы, а не глобальные переменные.
Передачу ссылок намного проще проверить (вы можете создать фиктивные объекты конфигурации). Глобалы меньше. Вы можете утверждать, что ссылка на метод не равна нулю. Я бы назвал тестируемость лучшей практикой.
Вторая альтернатива,
makebackup('my_table', $backup_path);
- это функция многократного использования и поэтому обычно предпочтительнее. Дополнительный аргумент не является большой ценой за возможность повторного использования.
Если вы полностью уверены, что когда-либо будете использовать эту функцию только в этом конкретном приложении и только для $ backup_path, тогда, возможно, рассмотрите глобальную альтернативу. Даже тогда хорошо проверить, действительно ли глобальная переменная существует. И имейте в виду, что избавиться от глобальных переменных, начав их использовать, чрезвычайно сложно.
Я думаю, вы должны использовать для этих целей конфигурацию класса Singleton of Factory.
function makebackup($table) { $backup_path = ConfigFactory().getConfig($some_site_specific_data).getBackupPath() mysqldump($table, $backup_path) }
Не уверен, что существует действительно «правильный» способ сделать это, но другой вариант будет примерно таким:
function makebackup($table, $backup_path = '') {
if ( $backup_path == '' ) {
if ( isset($GLOBALS['backup_path']) ) {
$backup_path = $GLOBALS['backup_path'];
}
else {
die('No backup path provided');
}
}
}
Таким образом, вы можете либо передать значение (для тестирования и использования в будущем ) или, если вы не передадите его, функция будет искать возможную глобальную переменную.
Альтернативный вариант - использовать константы php с define ().
Ваш config.php будет устанавливать константы для каждого параметра (соединение mysql, стиль css, то, что угодно). Тогда вам не нужно будет передавать переменные функциям или использовать глобальные.
Одним из недостатков является то, что вы можете определять только логические значения, числа с плавающей запятой, строки или целые числа, а не сложные структуры данных.
Лично я также очень четко обозначил глобальные переменные . Если я должен их использовать, я хочу прояснить их.
Итак, здесь я бы переименовал $ backup_path
в $ GLOBAL_backup_path
. Каждый раз, когда я видел это, я знал, что с ним нужно быть осторожным.