Any comments regarding default variable namespaces? Right now I have a lot of long variable names just to avoid clashes with my own stuff. variable_get('my_module_name_my_variable_name_var', MY_DEFAULT_VALUE); I was wondering if we should have variables within their own module namespaces. Sort of like local module variables (stored in the db of course) that would be guarrenteed unique??? Also, a side benefit of namespaces might be something like this: $vars = variable_get_array('my_module_name'); which could load all the variables for a module with one db call. On 5/3/07, Earnie Boyd <earnie@users.sourceforge.net> wrote:
Quoting Gabor Hojtsy <gabor@hojtsy.hu>:
Hi,
To be able to translate variables to multiple languages in Drupal nicely, we would need a small conceptual change, which would benefit all of the Drupal developers, so I am posting the call here in hopes we have someone or a small group to pick this task up.
**We need a central place to define variable defaults**
At the top of the module:
<?php define('MY_DEFAULT_VALUE', t('my_default_value')); ?>
Simple! Now whenever you need a variable, you do
variable_get('my_fine_var', 'my_default_value');
Then in the code:
<?php variable_get ('my_find_var', MY_DEFAULT_VALUE); ?>
The problem with this is that you need to repeat this multiple times, and of course there is a chance you need to modify it later on, so you need to find all places a variable is used. Not good. Remember the changes from bluemarine to garland, we have been fixing theme_default errors for days, finding out places where the variable was used...
I then only have one place to edit.
So we need a central place to define variable defaults. For Drupal 6 this is enough now:
The central place is at the top of the module with a define statement.
hook_settings() { return array( 'my_fine_var' => 'my_default_value', ); }
Have fun with naming it hook_settings(), as far as I see, it is an appropriate name, and not taken at the moment :) So Drupal can do a module_invoke_all() on hook_settings() and collect defaults to all variables from the modules defining them. It gets easier and shorter to use variables:
variable_get('my_fine_var');
variable_get('my_fine_var', MY_DEFAULT_VALUE) is simple enough. I don't understand why we would need to add this complication and overhead.
Earnie
-- -> JV