source: spip-zone/_plugins_/composer/trunk/inc/composer_json.php @ 93350

Last change on this file since 93350 was 93350, checked in by marcimat@…, 5 years ago

Un require vide doit s'écrire {} et non []. On force le json en objet. À voir si ça fonctionne à chaque fois :) + Indiquer qu'on necessite php 5.4.

File size: 2.3 KB
Line 
1<?php
2/**
3 * Fonctions du plugin Composer
4 *
5 * @plugin     Composer
6 * @copyright  2015
7 * @author     Matthieu Marcillaud
8 * @licence    GNU/GPL
9 * @package    SPIP\Composer\Fonctions
10 */
11 
12if (!defined('_ECRIRE_INC_VERSION')) return;
13
14
15/**
16 * Décrit le tableau JSON qui servira à génerer le composer.json
17**/
18class Composer_JSON {
19
20        /** @var array Données du futur json */
21        private $data = array();
22
23        /**
24         * Contructeur
25         *
26         * @param array $options
27         *     Valeurs à intégrer au json
28         */
29        public function __construct($options = array()) {
30                $defaut = array(
31                        "minimum-stability" => "dev",
32                        "prefer-stable" => true,
33                        "require" => array(),
34                        "config" => array(
35                                // le composer.json est dans config/
36                                // mais on veut générer le vendor/ à la racine, tant qu'à faire
37                                "vendor-dir" => rtrim(_ROOT_VENDOR, '/')
38                        )
39                );
40                $this->data = array_merge_recursive($defaut, $options);
41        }
42
43        /**
44         * Ajoute un élément au tableau de déclaration
45         *
46         * @param string $name
47         *     Nom de l'attribut ajouté ou modifié
48         * @param mixed $value
49         *     Valeur de l'attribut
50        **/
51        public function add($attr, $value) {
52                $this->data[$attr] = $value;
53        }
54
55        /**
56         * Retourne un élément au tableau de déclaration
57         *
58         * @param string $name
59         *     Nom de l'attribut demandé
60         * @param mixed $value
61         *     Valeur de l'attribut
62        **/
63        public function get($attr) {
64                if (array_key_exists($attr, $this->data)) {
65                        return $this->data[$attr];
66                }
67                return null;
68        }
69
70        /**
71         * Ajoute un require
72         *
73         * @param string $name
74         *     Nom du package
75         * @param string $value
76         *     Ce qu'on souhaite. Ex: "~1.1", "dev-master", ">=2.0" ...
77        **/
78        public function add_require($name, $value) {
79                $this->data['require'][$name] = $value;
80        }
81
82        /**
83         * Indique sur un package est requis
84         *
85         * @param string $name
86         *     Nom du package
87         * @return bool
88        **/
89        public function is_required($name) {
90                return !empty($this->data['require'][$name]);
91        }
92
93        /**
94         * Retourne la liste de toutes les librairies requises
95         *
96         * @return array
97        **/
98        public function get_requires() {
99                return $this->data['require'];
100        }
101
102        /**
103         * Retourne le JSON pour Composer.
104         *
105         * @return string JSON
106        **/
107        public function get_json() {
108                return json_encode($this->data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_FORCE_OBJECT );
109        }
110}
Note: See TracBrowser for help on using the repository browser.