Comment les gars suggèrent-ils de partager un fichier de constantes entre PHP et JavaScript, afin de ne pas répéter le code? Fichier XML? Je suppose que mélanger javascipt dans PHP ne serait pas la bonne solution !? MerciFichier de constantes communes pour PHP et JavaScript
Répondre
http://php.net/manual/en/book.json.php
Je dirais que l'utilisation JSON. Il est natif du javascript et il existe une bibliothèque de parseurs pour le php.
considèrent comme suit:
JSON:
{constants : { var1 : "value 1", var2 : "value 2", var3 : "value 3"}}
puis le lire en php:
$const = json_decode(json_string);
Cela vous donne l'objet const $ avec des propriétés comme const $ -> { 'var1'} retourne "valeur 1".
en JavaScript serait:
var const = eval(json_string);
et vous donnera const.constants.var1 == "valeur 1".
mise en œuvre en termes Easiest réels pour js est:
<script type="text/javascript" src="json_constants_file.js"></script>
Lorsque ajouté la sortie HTML que vous avez instantanément un objet avec les constantes d'autres objets comme ses enfants.
+1 Semble comme la solution la plus simple. @OP: Du côté Javascript, vous pouvez charger les constantes séparément, ou (puisque cela semble inutile) avoir un processus de construction qui les prépare à votre fichier Javascript (précédé de 'var constantes =' et suivi de ';' pour faire fonctionner l'expression). –
Juste pour m'assurer que je comprenais, je voudrais d'abord lire en PHP avec file_get_contents le fichier de constantes, puis, dans les balises de script, je ferais var constantes = "la chaîne de résultat"? – Luis
et devrais-je faire cela dans chaque fichier php sur mon site? – Luis
Les variables de configuration à partager à la fois par PHP et JavaScript pourraient facilement être stockées en XML, oui. JSON pourrait être une meilleure solution, car il nécessite un minimum d'effort pour analyser - JS le gère nativement, et PHP le transforme en un tableau avec json_decode
.
Vous pouvez essayer ma méthode. J'ai créé un fichier de configuration commun à utiliser avec les fichiers php et js.
Découvrez cette astuce:
PHP classe du fichier de configuration:
<?php
/** Class Start **/
class Config {
/********************************/
/* Page Config Info */
/********************************/
// page title
const PAGE_TITLE = 'Welcome in Code Era!';
// base url
const BASE_URL = 'http://www.myapp.com/';
/********************************/
/* Database Config Info */
/********************************/
// mysql host server
const SERVER = '10.102.23.141';
// database user name
const USER = 'root';
// database password
const PASSWORD = '';
// mysql database name
const DATABASE = 'sample';
/********************************/
/* Share Message */
/********************************/
// Facebook Share Message
const FB_SHARE_MESSAGE = 'This gonna my share message';
// Facebook Share Title
const FB_SHARE_TITLE = 'This gonna my share title';
// Facebook Share Caption
const FB_SHARE_CAPTION = 'This gonna my share caption';
}
/** Class End **/
?>
JavaScript fichier:
// global config var
var config = {} || '' || null;
/**
* Get Config data with Ajax Response Data
* custom ajax method
* return ajax response and use/store as javascript var
* extend jQuery Ajax and change it
* @param qs -> query string {q:value}
* @returns result mix|multitype
*/
$.extend({
getConfig : function (qs) {
var result = null;
$.ajax({
url : 'GetConfig.php',
type : 'POST',
data : qs,
dataType : "json",
async : false,
success : function (data) {
result = data;
},
error : function ajaxError(jqXHR, exception) {
if (jqXHR.status === 0) {
alert('Not connected.\nVerify your network.');
} else if (jqXHR.status === 404) {
alert('The requested page not found. [404]');
} else if (jqXHR.status === 500) {
alert('Internal Server Error [500].');
} else if (exception === 'parsererror') {
alert('Requested JSON parse failed.');
} else if (exception === 'timeout') {
alert('Time out error.');
} else if (exception === 'abort') {
alert('Ajax request aborted.');
} else {
alert('Uncaught Error.\n' + jqXHR.responseText);
}
}
});
return result;
}
});
// Collect all Class Constant data on page load
var CONFIG = (function() {
var private = $.getConfig({config_item : ''});
return {
get: function(name) { return private.data[name]; }
};
})();
/**
* Facebook Share Content example code
* with using class constant
*/
function fbShare() {
var feed = {
method : 'feed',
link : CONFIG.get('BASE_URL'),
name : CONFIG.get('FB_SHARE_TITLE'),
caption : CONFIG.get('FB_SHARE_CAPTION')
};
function callback(response) {
if (response && response.post_id !== undefined) {
alert('Thank you for sharing the content.');
}
}
FB.ui(feed, callback);
}
Comment utiliser JavaScript:
var fbShareMessage = CONFIG.get('FB_SHARE_MESSAGE');
Sans exemple fonction CONFIG.get:
var fbShareMessage = $.getConfig({config_item : 'FB_SHARE_MESSAGE'}).data;
code PHP pour le fichier GetConfig.php:
<?php
/**
* Get Config php file
* request a config item from javascript/ajax
* return json data
*/
// check request with ajax only
if (empty($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
exit;
}
// include class config
require_once '../class/class.config.php';
// get all constant from class config
$configConstant = new ReflectionClass('Config');
// store as array in var
$configConstantArray = ($configConstant->getConstants());
// safe and private request item
$black_list_constant = 'SERVER|USER|PASSWORD|DATABASE';
$black_list_object = explode('|',$black_list_constant);
// make return jason format
$result = array();
// get action from ajax
$action = $_POST['config_item'];
switch ($action) {
case '':
$result["status"]= TRUE;
foreach ($black_list_object as $index => $value){
if(array_key_exists($value, $configConstantArray)){
unset($configConstantArray["$value"]);
}
}
$result["data"]= $configConstantArray;
$result["msg"]= 'Response 200 OK';
echo json_encode($result);
break;
default:
// check valid action
if(array_key_exists($action,$configConstantArray) && in_array($action,$black_list_object)){
$result["status"]= FALSE;
$result["data"]= null;
$result["msg"]= 'Response 201 FAIL';
echo json_encode($result);
}else{
$result["status"]= TRUE;
$result["data"]= $configConstantArray["$action"];
$result["msg"]= 'Response 200 OK';
echo json_encode($result);
}
break;
}
Voilà. J'espère que cela aidera quelqu'un :)
- 1. Comment créer un fichier de constantes en Javascript?
- 2. Fichier méta-framework/constantes?
- 3. communes configuration fichier de configuration personnalisée
- 4. Constantes de caractères multi-octets et constantes de type d'en-tête de fichier bitmap
- 5. Fichier constantes Java
- 6. Constantes et maintenabilité
- 7. Constantes et aspx
- 8. PHP: Obtenir les variables, les fonctions, les constantes de PHP à partir d'un fichier php
- 9. Utilisation de constantes comme indices pour les tableaux associatifs Javascript
- 10. App Engine et communes fileUpload
- 11. Fonctions graphiques communes et utiles?
- 12. Où dois-je mettre le fichier de constantes pour Codeigniter (PHP)?
- 13. Chargement automatique de constantes en PHP?
- 14. Constantes PHP à portée locale
- 15. VBA dans Excel: fichier de constantes globales
- 16. Variables de serveur constantes?
- 17. Constantes "Magic" en C# comme PHP a?
- 18. Constantes Delphi et références
- 19. Variables de classe PHP avec constantes
- 20. Constantes et annotation
- 21. Ressources communes dans Silverlight et .NET
- 22. constantes magiques d'accès dynamique en php
- 23. Comment les constantes sont-elles définies et utilisées en PHP?
- 24. problème d'exécution de fichier php avec javascript
- 25. redirection php et javascript
- 26. PHP et Javascript Webservice
- 27. Travailler avec des fonctions constantes et non constantes - C++
- 28. Pour JSON et json_decode en PHP et JavaScript
- 29. Définition des constantes Memcached en PHP
- 30. Comment examiner les constantes définies en PHP?
Quelques commentaires intéressants ici: http: // stackoverflow.com/questions/239832/comment-faire-vous-partager-configuration-informations-ou-affaires-règles-entre-langues – Ken
Ma réponse est ici (je n'aime pas me répéter): http://stackoverflow.com/questions/440494/share-constants-between-php-and-javascript/6818597#6818597 – Dave
Je ne veux pas me répéter, afin de vérifier cette réponse: http: // stackoverflow. com/questions/440494/share-constants-entre-php-et-javascript/6818597 # 6818597 – Dave