├── zzmisc
├── x.txt
├── create_products_table.sql
├── clip.txt
├── AJs_notes.md
├── misc.todo
└── objects-in-php.php
├── README.md
├── BOOKMARK.txt
├── .DS_Store
├── .gitignore
├── app
├── .DS_Store
├── Controllers
│ ├── PageController.php
│ └── ProductController.php
├── Models
│ └── Product.php
└── Router.php
├── links.txt
├── .htaccess
├── TODO.md
├── .vscode
└── settings.json
├── routes
└── web.php
├── composer.json
├── public
└── index.php
├── views
├── homepage.php
└── product.php
├── simple_mvc_setup.sh
└── composer.lock
/zzmisc/x.txt:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # LAMP-MVC
2 |
--------------------------------------------------------------------------------
/BOOKMARK.txt:
--------------------------------------------------------------------------------
1 | NOTE: You left off at the Controller part
--------------------------------------------------------------------------------
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kakao74/LAMP-MVC/HEAD/.DS_Store
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # add the vendor directory to the path
2 | /vendor*
3 |
4 |
--------------------------------------------------------------------------------
/app/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/kakao74/LAMP-MVC/HEAD/app/.DS_Store
--------------------------------------------------------------------------------
/links.txt:
--------------------------------------------------------------------------------
1 |
2 | Website Link:
3 |
4 | https://www.giuseppemaccario.com/how-to-build-a-simple-php-mvc-framework/
5 |
6 |
--------------------------------------------------------------------------------
/.htaccess:
--------------------------------------------------------------------------------
1 |
2 | RewriteEngine On
3 |
4 | # Stop processing if already in the /public directory
5 | RewriteRule ^public/ - [L]
6 |
7 | # Static resources if they exist
8 | RewriteCond %{DOCUMENT_ROOT}/public/$1 -f
9 | RewriteRule ^(.*)$ /public/$1 [L]
10 |
11 | # Route all other requests
12 | RewriteRule ^(.*) public/index.php [L, QSA]
13 |
14 |
--------------------------------------------------------------------------------
/app/Controllers/PageController.php:
--------------------------------------------------------------------------------
1 | get('product')->getPath());
14 |
15 | require_once APP_ROOT . '/views/home.php';
16 | }
17 | }
--------------------------------------------------------------------------------
/TODO.md:
--------------------------------------------------------------------------------
1 | # Project
2 |
3 | Project Description
4 |
5 | [TODO.md spec & Kanban Board](https://bit.ly/3fCwKfM)
6 |
7 | ### Todo
8 |
9 | - [ ] screen record
10 | - [ ] explain what's happening
11 | - [ ] make it better
12 | - [ ] copy the code
13 | - [ ] deploy
14 | - [ ] MVC Framework
15 | - [ ] shell script to create folder structure
16 |
17 | ### In Progress
18 |
19 | - [ ] Controller
20 |
21 | ### Done ✓
22 |
23 |
24 |
--------------------------------------------------------------------------------
/zzmisc/create_products_table.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE IF NOT EXISTS products (
2 | id int(10) NOT NULL auto_increment,
3 | title varchar(255) collate utf8_unicode_ci NOT NULL,
4 | description text collate utf8_unicode_ci,
5 | price decimal(12,5) NOT NULL,
6 | sku varchar(255) collate utf8_unicode_ci NOT NULL,
7 | image varchar(255) collate utf8_unicode_ci NOT NULL,
8 | PRIMARY KEY (id)
9 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;
--------------------------------------------------------------------------------
/zzmisc/clip.txt:
--------------------------------------------------------------------------------
1 | /*
2 | * @Author: AJ Javadi
3 | * @Email: amirjavadi25@gmail.com
4 | * @Date: 2023-10-22 09:57:03
5 | * @Last Modified by: Someone
6 | * @Last Modified time: 2023-10-22 09:59:50
7 | * @Description: file:///Users/aj/sandbox/LAMP-MVC/clip.txt
8 | */
9 |
10 |
11 |
12 | LINK:
13 | https://www.giuseppemaccario.com/how-to-build-a-simple-php-mvc-framework/
14 |
15 |
16 |
17 |
18 |
19 | Model
20 |
21 |
22 | View
23 |
24 |
25 | Controller
26 |
--------------------------------------------------------------------------------
/app/Controllers/ProductController.php:
--------------------------------------------------------------------------------
1 | read($id);
15 |
16 | require_once APP_ROOT . '/views/product.php';
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "sqltools.connections": [
3 | {
4 | "mysqlOptions": {
5 | "authProtocol": "default",
6 | "enableSsl": "Disabled"
7 | },
8 | "previewLimit": 50,
9 | "server": "localhost",
10 | "port": 3306,
11 | "driver": "MySQL",
12 | "name": "test",
13 | "database": "aj_simple_mvc_db",
14 | "username": "root"
15 | }
16 | ]
17 | }
--------------------------------------------------------------------------------
/routes/web.php:
--------------------------------------------------------------------------------
1 | add('product', new Route(constant('URL_SUBFOLDER') . '/product/{id}', array('controller' => 'ProductController', 'method'=>'showAction'), array('id' => '[0-9]+')));
9 | $routes->add('homepage', new Route(constant('URL_SUBFOLDER') . '/', array('controller' => 'PageController', 'method'=>'indexAction'), array()));
10 |
11 |
--------------------------------------------------------------------------------
/zzmisc/AJs_notes.md:
--------------------------------------------------------------------------------
1 |
2 | # Building a Simple Model View Controller (MVC) App in MAMP Stack
3 |
4 |
5 | ---
6 |
7 | ## Introduction
8 |
9 |
10 | ## User Stories
11 |
12 | ----
13 |
14 |
15 | //TODO: Add user stories here
16 | //TODO: save shell script as a gist
17 | //TODO: data model for the app
18 |
19 | ---
20 |
21 |
22 | ---
23 | ## Notes:
24 |
25 | - Model
26 | - an object that represents the data in the app
27 | - database table structure
28 | - CRUD
29 | - ORM (Object Relational Mapping)
30 |
31 |
32 | - View
33 |
34 | - Controller
35 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "aj/aj-simple-mvc",
3 | "description": "Simle MVC framework: a demo for LAMP/MAMP stack",
4 | "autoload": {
5 | "psr-4": {
6 | "App\\": "app"
7 | },
8 | "classmap": [
9 | "app/"
10 | ]
11 | },
12 | "version": "0.1.0",
13 | "license": "MIT",
14 | "author": {
15 | "name": "AJ Javadi",
16 | "email": "amirjavadi25@gmail.com",
17 | "url": "http://github.com/oshkoshbagoshh"
18 | },
19 | "require": {
20 | "symfony/routing": "^6.3",
21 | "symfony/http-foundation": "^6.3"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/public/index.php:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | Simple PHP MVC
13 |
14 |
15 |
16 |
17 |
18 |
19 | Homepage
20 |
21 | Check the first product
22 |
23 |
24 |
25 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/zzmisc/misc.todo:
--------------------------------------------------------------------------------
1 | {
2 | "todotree": {
3 | "tree": [
4 | {
5 | "key": 1697996441688,
6 | "children": [],
7 | "todo": {
8 | "content": "Build and Query MySQL databases",
9 | "id": 1697996441688,
10 | "level": "default",
11 | "done": false,
12 | "start": 1697996441689
13 | }
14 | },
15 | {
16 | "key": 1697996466749,
17 | "children": [],
18 | "todo": {
19 | "content": "PHP superglobals",
20 | "id": 1697996466749,
21 | "level": "default",
22 | "done": false,
23 | "start": 1697996466749
24 | }
25 | },
26 | {
27 | "key": 1697996486236,
28 | "children": [],
29 | "todo": {
30 | "content": "PHP Superglobals",
31 | "id": 1697996486236,
32 | "level": "default",
33 | "done": false,
34 | "start": 1697996486236
35 | }
36 | }
37 | ],
38 | "expandKeys": [],
39 | "schema": "https://github.com/Saber2pr/vsc-ext-todolist/blob/master/src/api/type.ts#L3",
40 | "add_mode": "bottom",
41 | "virtual": false,
42 | "showLine": false,
43 | "playFontSize": 24,
44 | "title": "misc",
45 | "autoSort": false,
46 | "showEndTime": false,
47 | "simpleMode": false,
48 | "lang": "en",
49 | "version": "1697996493631"
50 | }
51 | }
--------------------------------------------------------------------------------
/app/Models/Product.php:
--------------------------------------------------------------------------------
1 | id;
18 | }
19 |
20 | public function getTitle()
21 | {
22 | return $this->title;
23 | }
24 | public function getDescription()
25 | {
26 | return $this->description;
27 | }
28 | public function getPrice() {
29 | return $this->price;
30 | }
31 | public function getSku() {
32 | return $this->sku;
33 | }
34 | public function getImage() {
35 | return $this->image;
36 | }
37 |
38 | // SET METHODS
39 | public function setTitle(string $title)
40 | {
41 | $this->title = $title;
42 | }
43 | public function setDescription(string $description)
44 | {
45 | $this->description = $description;
46 | }
47 | public function setPrice(float $price)
48 | {
49 | $this->price = $price;
50 | }
51 | public function setSku(string $sku)
52 | {
53 | $this->sku = $sku;
54 | }
55 | public function setImage(string $image)
56 | {
57 | $this->image = $image;
58 | }
59 |
60 |
61 | // CRUD OPERATIONS
62 | public function create(array $data){
63 |
64 | }
65 | public function read(int $id){
66 |
67 | }
68 | public function update(int $id, array $data){
69 |
70 | }
71 | public function delete(int $id){
72 |
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/views/product.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | simple PHP MVC
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | My Product:
21 |
22 | - getTitle(); ?>
23 | - getDescription(); ?>
24 | - getPrice(); ?>
25 | - getSku(); ?>
26 | - getImage(); ?>
27 |
28 |
29 | Back to homepage
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/simple_mvc_setup.sh:
--------------------------------------------------------------------------------
1 | #!/bin/zsh
2 | # @Author: AJ Javadi
3 | # @Email: amirjavadi25@gmail.com
4 | # @Date: 2023-10-21 23:39:03
5 | # @Last Modified by: undefined
6 | # @Last Modified time: 2023-10-21 23:39:03
7 | # @Description: This script will create a simple MVC framework file and folder structure
8 | #
9 | # test script
10 | # build a simple MVC framework file and folder structure
11 | # the basis of the folders are:
12 | # 1. app
13 | # 2. config
14 | # 3. public
15 | # 4. views
16 | # 5. routes
17 | echo "Creating folders..."
18 | echo "==================="
19 | # echo "creating app folder..."
20 | mkdir app
21 | # echo "creating config folder..."
22 | mkdir config
23 | mkdir public
24 | mkdir views
25 | mkdir routes
26 | echo "==================="
27 | # testing if folders were created
28 | # if the folder exists, then print out the folder name and say that the folder was created already
29 | # if the folder does not exist, then print out the folder name and say that the folder was created
30 | echo "testing if folders were created..."
31 | echo "==================="
32 | if [ -d app ]; then
33 | echo "app folder was created already"
34 | else
35 | echo "app folder was created"
36 | fi
37 | if [ -d config ]; then
38 | echo "config folder was created already"
39 | else
40 | echo "config folder was created"
41 | fi
42 | if [ -d public ]; then
43 | echo "public folder was created already"
44 | else
45 | echo "public folder was created"
46 | fi
47 | if [ -d views ]; then
48 | echo "views folder was created already"
49 | else
50 | echo "views folder was created"
51 | fi
52 | if [ -d routes ]; then
53 | echo "routes folder was created already"
54 | else
55 | echo "routes folder was created"
56 | fi
57 | echo "==================="
58 | echo "...done"
59 |
60 |
--------------------------------------------------------------------------------
/app/Router.php:
--------------------------------------------------------------------------------
1 | fromRequest(Request::createFromGlobals());
20 |
21 | // Routing can match routes with incoming requests
22 | $matcher = new UrlMatcher($routes, $context);
23 | try {
24 | $arrayUri = explode('?', $_SERVER['REQUEST_URI']);
25 | $matcher = $matcher->match($arrayUri[0]);
26 |
27 | // Cast params to int if numeric
28 | array_walk($matcher, function(&$param)
29 | {
30 | if(is_numeric($param))
31 | {
32 | $param = (int) $param;
33 | }
34 | });
35 |
36 | // https://github.com/gmaccario/simple-mvc-php-framework/issues/2
37 | // Issue #2: Fix Non-static method ... should not be called statically
38 | $className = '\\App\\Controllers\\' . $matcher['controller'];
39 | $classInstance = new $className();
40 |
41 | // Add routes as paramaters to the next class
42 | $params = array_merge(array_slice($matcher, 2, -1), array('routes' => $routes));
43 |
44 | call_user_func_array(array($classInstance, $matcher['method']), $params);
45 |
46 | } catch (MethodNotAllowedException $e) {
47 | echo 'Route method is not allowed.';
48 | } catch (ResourceNotFoundException $e) {
49 | echo 'Route does not exists.';
50 | } catch (NoConfigurationException $e) {
51 | echo 'Configuration does not exists.';
52 | }
53 | }
54 | }
55 |
56 | // Invoke
57 | $router = new Router();
58 | $router($routes);
--------------------------------------------------------------------------------
/zzmisc/objects-in-php.php:
--------------------------------------------------------------------------------
1 | prop1 = $Arg1;
28 | $this->prop2 = $Arg2;
29 |
30 | // etc.
31 | }
32 | }
33 |
34 |
35 | */
36 |
37 | // class Invoice {
38 | // public $customer_id;
39 | // public $subtotal;
40 | // public $tax_rate;
41 | // public $total;
42 |
43 | // public function __construct($Customer_id, $Subtotal, $Tax_rate) {
44 | // $this->customer_id = $Customer_id;
45 | // $this->subtotal = $Subtotal;
46 | // $this->tax_rate = $Tax_rate;
47 | // $this->total = $Subtotal * (1 + $Tax_rate);
48 | // }
49 | // }
50 |
51 | // add methods to the class
52 |
53 |
54 |
55 | class Invoice {
56 | public $customer_id;
57 | public $subtotal;
58 | public $tax_rate;
59 | public $total;
60 |
61 | public function __construct($Customer_id, $Subtotal, $Tax_rate) {
62 | $this->customer_id = $Customer_id;
63 | $this->subtotal = $Subtotal;
64 | $this->tax_rate = $Tax_rate;
65 | $this->total = $Subtotal * (1 + $Tax_rate);
66 | }
67 |
68 | // add method to the class
69 | public function calculate_total() {
70 | $total = $this->subtotal * (1 + $this->tax_rate);
71 | return round($total, 2);
72 |
73 | }
74 |
75 |
76 | }
77 |
78 | // create an instance of the class (an object)
79 | // syntax: $object = new Class_Name(value1, value2, ...);
80 | $invoice = new Invoice(1, 100, 0.1);
81 |
82 |
83 |
84 | // access the object's properties
85 | // syntax: $object->property_name;
86 | // echo $invoice->customer_id;
87 | echo $invoice->calculate_total();
88 |
89 | // working with object methods
90 | // syntax: $object->method_name();
91 | echo $invoice->calculate_total();
92 |
93 |
94 | ?>
--------------------------------------------------------------------------------
/composer.lock:
--------------------------------------------------------------------------------
1 | {
2 | "_readme": [
3 | "This file locks the dependencies of your project to a known state",
4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5 | "This file is @generated automatically"
6 | ],
7 | "content-hash": "a27615dd413ebddfbd9783aa2cbb6a5b",
8 | "packages": [
9 | {
10 | "name": "symfony/deprecation-contracts",
11 | "version": "v3.3.0",
12 | "source": {
13 | "type": "git",
14 | "url": "https://github.com/symfony/deprecation-contracts.git",
15 | "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf"
16 | },
17 | "dist": {
18 | "type": "zip",
19 | "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf",
20 | "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf",
21 | "shasum": ""
22 | },
23 | "require": {
24 | "php": ">=8.1"
25 | },
26 | "type": "library",
27 | "extra": {
28 | "branch-alias": {
29 | "dev-main": "3.4-dev"
30 | },
31 | "thanks": {
32 | "name": "symfony/contracts",
33 | "url": "https://github.com/symfony/contracts"
34 | }
35 | },
36 | "autoload": {
37 | "files": [
38 | "function.php"
39 | ]
40 | },
41 | "notification-url": "https://packagist.org/downloads/",
42 | "license": [
43 | "MIT"
44 | ],
45 | "authors": [
46 | {
47 | "name": "Nicolas Grekas",
48 | "email": "p@tchwork.com"
49 | },
50 | {
51 | "name": "Symfony Community",
52 | "homepage": "https://symfony.com/contributors"
53 | }
54 | ],
55 | "description": "A generic function and convention to trigger deprecation notices",
56 | "homepage": "https://symfony.com",
57 | "support": {
58 | "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0"
59 | },
60 | "funding": [
61 | {
62 | "url": "https://symfony.com/sponsor",
63 | "type": "custom"
64 | },
65 | {
66 | "url": "https://github.com/fabpot",
67 | "type": "github"
68 | },
69 | {
70 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
71 | "type": "tidelift"
72 | }
73 | ],
74 | "time": "2023-05-23T14:45:45+00:00"
75 | },
76 | {
77 | "name": "symfony/http-foundation",
78 | "version": "v6.3.6",
79 | "source": {
80 | "type": "git",
81 | "url": "https://github.com/symfony/http-foundation.git",
82 | "reference": "c186627f52febe09c6d5270b04f8462687a250a6"
83 | },
84 | "dist": {
85 | "type": "zip",
86 | "url": "https://api.github.com/repos/symfony/http-foundation/zipball/c186627f52febe09c6d5270b04f8462687a250a6",
87 | "reference": "c186627f52febe09c6d5270b04f8462687a250a6",
88 | "shasum": ""
89 | },
90 | "require": {
91 | "php": ">=8.1",
92 | "symfony/deprecation-contracts": "^2.5|^3",
93 | "symfony/polyfill-mbstring": "~1.1",
94 | "symfony/polyfill-php83": "^1.27"
95 | },
96 | "conflict": {
97 | "symfony/cache": "<6.3"
98 | },
99 | "require-dev": {
100 | "doctrine/dbal": "^2.13.1|^3|^4",
101 | "predis/predis": "^1.1|^2.0",
102 | "symfony/cache": "^6.3",
103 | "symfony/dependency-injection": "^5.4|^6.0",
104 | "symfony/expression-language": "^5.4|^6.0",
105 | "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4",
106 | "symfony/mime": "^5.4|^6.0",
107 | "symfony/rate-limiter": "^5.2|^6.0"
108 | },
109 | "type": "library",
110 | "autoload": {
111 | "psr-4": {
112 | "Symfony\\Component\\HttpFoundation\\": ""
113 | },
114 | "exclude-from-classmap": [
115 | "/Tests/"
116 | ]
117 | },
118 | "notification-url": "https://packagist.org/downloads/",
119 | "license": [
120 | "MIT"
121 | ],
122 | "authors": [
123 | {
124 | "name": "Fabien Potencier",
125 | "email": "fabien@symfony.com"
126 | },
127 | {
128 | "name": "Symfony Community",
129 | "homepage": "https://symfony.com/contributors"
130 | }
131 | ],
132 | "description": "Defines an object-oriented layer for the HTTP specification",
133 | "homepage": "https://symfony.com",
134 | "support": {
135 | "source": "https://github.com/symfony/http-foundation/tree/v6.3.6"
136 | },
137 | "funding": [
138 | {
139 | "url": "https://symfony.com/sponsor",
140 | "type": "custom"
141 | },
142 | {
143 | "url": "https://github.com/fabpot",
144 | "type": "github"
145 | },
146 | {
147 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
148 | "type": "tidelift"
149 | }
150 | ],
151 | "time": "2023-10-17T11:32:53+00:00"
152 | },
153 | {
154 | "name": "symfony/polyfill-mbstring",
155 | "version": "v1.28.0",
156 | "source": {
157 | "type": "git",
158 | "url": "https://github.com/symfony/polyfill-mbstring.git",
159 | "reference": "42292d99c55abe617799667f454222c54c60e229"
160 | },
161 | "dist": {
162 | "type": "zip",
163 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229",
164 | "reference": "42292d99c55abe617799667f454222c54c60e229",
165 | "shasum": ""
166 | },
167 | "require": {
168 | "php": ">=7.1"
169 | },
170 | "provide": {
171 | "ext-mbstring": "*"
172 | },
173 | "suggest": {
174 | "ext-mbstring": "For best performance"
175 | },
176 | "type": "library",
177 | "extra": {
178 | "branch-alias": {
179 | "dev-main": "1.28-dev"
180 | },
181 | "thanks": {
182 | "name": "symfony/polyfill",
183 | "url": "https://github.com/symfony/polyfill"
184 | }
185 | },
186 | "autoload": {
187 | "files": [
188 | "bootstrap.php"
189 | ],
190 | "psr-4": {
191 | "Symfony\\Polyfill\\Mbstring\\": ""
192 | }
193 | },
194 | "notification-url": "https://packagist.org/downloads/",
195 | "license": [
196 | "MIT"
197 | ],
198 | "authors": [
199 | {
200 | "name": "Nicolas Grekas",
201 | "email": "p@tchwork.com"
202 | },
203 | {
204 | "name": "Symfony Community",
205 | "homepage": "https://symfony.com/contributors"
206 | }
207 | ],
208 | "description": "Symfony polyfill for the Mbstring extension",
209 | "homepage": "https://symfony.com",
210 | "keywords": [
211 | "compatibility",
212 | "mbstring",
213 | "polyfill",
214 | "portable",
215 | "shim"
216 | ],
217 | "support": {
218 | "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0"
219 | },
220 | "funding": [
221 | {
222 | "url": "https://symfony.com/sponsor",
223 | "type": "custom"
224 | },
225 | {
226 | "url": "https://github.com/fabpot",
227 | "type": "github"
228 | },
229 | {
230 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
231 | "type": "tidelift"
232 | }
233 | ],
234 | "time": "2023-07-28T09:04:16+00:00"
235 | },
236 | {
237 | "name": "symfony/polyfill-php80",
238 | "version": "v1.28.0",
239 | "source": {
240 | "type": "git",
241 | "url": "https://github.com/symfony/polyfill-php80.git",
242 | "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5"
243 | },
244 | "dist": {
245 | "type": "zip",
246 | "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5",
247 | "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5",
248 | "shasum": ""
249 | },
250 | "require": {
251 | "php": ">=7.1"
252 | },
253 | "type": "library",
254 | "extra": {
255 | "branch-alias": {
256 | "dev-main": "1.28-dev"
257 | },
258 | "thanks": {
259 | "name": "symfony/polyfill",
260 | "url": "https://github.com/symfony/polyfill"
261 | }
262 | },
263 | "autoload": {
264 | "files": [
265 | "bootstrap.php"
266 | ],
267 | "psr-4": {
268 | "Symfony\\Polyfill\\Php80\\": ""
269 | },
270 | "classmap": [
271 | "Resources/stubs"
272 | ]
273 | },
274 | "notification-url": "https://packagist.org/downloads/",
275 | "license": [
276 | "MIT"
277 | ],
278 | "authors": [
279 | {
280 | "name": "Ion Bazan",
281 | "email": "ion.bazan@gmail.com"
282 | },
283 | {
284 | "name": "Nicolas Grekas",
285 | "email": "p@tchwork.com"
286 | },
287 | {
288 | "name": "Symfony Community",
289 | "homepage": "https://symfony.com/contributors"
290 | }
291 | ],
292 | "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
293 | "homepage": "https://symfony.com",
294 | "keywords": [
295 | "compatibility",
296 | "polyfill",
297 | "portable",
298 | "shim"
299 | ],
300 | "support": {
301 | "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0"
302 | },
303 | "funding": [
304 | {
305 | "url": "https://symfony.com/sponsor",
306 | "type": "custom"
307 | },
308 | {
309 | "url": "https://github.com/fabpot",
310 | "type": "github"
311 | },
312 | {
313 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
314 | "type": "tidelift"
315 | }
316 | ],
317 | "time": "2023-01-26T09:26:14+00:00"
318 | },
319 | {
320 | "name": "symfony/polyfill-php83",
321 | "version": "v1.28.0",
322 | "source": {
323 | "type": "git",
324 | "url": "https://github.com/symfony/polyfill-php83.git",
325 | "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11"
326 | },
327 | "dist": {
328 | "type": "zip",
329 | "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11",
330 | "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11",
331 | "shasum": ""
332 | },
333 | "require": {
334 | "php": ">=7.1",
335 | "symfony/polyfill-php80": "^1.14"
336 | },
337 | "type": "library",
338 | "extra": {
339 | "branch-alias": {
340 | "dev-main": "1.28-dev"
341 | },
342 | "thanks": {
343 | "name": "symfony/polyfill",
344 | "url": "https://github.com/symfony/polyfill"
345 | }
346 | },
347 | "autoload": {
348 | "files": [
349 | "bootstrap.php"
350 | ],
351 | "psr-4": {
352 | "Symfony\\Polyfill\\Php83\\": ""
353 | },
354 | "classmap": [
355 | "Resources/stubs"
356 | ]
357 | },
358 | "notification-url": "https://packagist.org/downloads/",
359 | "license": [
360 | "MIT"
361 | ],
362 | "authors": [
363 | {
364 | "name": "Nicolas Grekas",
365 | "email": "p@tchwork.com"
366 | },
367 | {
368 | "name": "Symfony Community",
369 | "homepage": "https://symfony.com/contributors"
370 | }
371 | ],
372 | "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions",
373 | "homepage": "https://symfony.com",
374 | "keywords": [
375 | "compatibility",
376 | "polyfill",
377 | "portable",
378 | "shim"
379 | ],
380 | "support": {
381 | "source": "https://github.com/symfony/polyfill-php83/tree/v1.28.0"
382 | },
383 | "funding": [
384 | {
385 | "url": "https://symfony.com/sponsor",
386 | "type": "custom"
387 | },
388 | {
389 | "url": "https://github.com/fabpot",
390 | "type": "github"
391 | },
392 | {
393 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
394 | "type": "tidelift"
395 | }
396 | ],
397 | "time": "2023-08-16T06:22:46+00:00"
398 | },
399 | {
400 | "name": "symfony/routing",
401 | "version": "v6.3.5",
402 | "source": {
403 | "type": "git",
404 | "url": "https://github.com/symfony/routing.git",
405 | "reference": "82616e59acd3e3d9c916bba798326cb7796d7d31"
406 | },
407 | "dist": {
408 | "type": "zip",
409 | "url": "https://api.github.com/repos/symfony/routing/zipball/82616e59acd3e3d9c916bba798326cb7796d7d31",
410 | "reference": "82616e59acd3e3d9c916bba798326cb7796d7d31",
411 | "shasum": ""
412 | },
413 | "require": {
414 | "php": ">=8.1",
415 | "symfony/deprecation-contracts": "^2.5|^3"
416 | },
417 | "conflict": {
418 | "doctrine/annotations": "<1.12",
419 | "symfony/config": "<6.2",
420 | "symfony/dependency-injection": "<5.4",
421 | "symfony/yaml": "<5.4"
422 | },
423 | "require-dev": {
424 | "doctrine/annotations": "^1.12|^2",
425 | "psr/log": "^1|^2|^3",
426 | "symfony/config": "^6.2",
427 | "symfony/dependency-injection": "^5.4|^6.0",
428 | "symfony/expression-language": "^5.4|^6.0",
429 | "symfony/http-foundation": "^5.4|^6.0",
430 | "symfony/yaml": "^5.4|^6.0"
431 | },
432 | "type": "library",
433 | "autoload": {
434 | "psr-4": {
435 | "Symfony\\Component\\Routing\\": ""
436 | },
437 | "exclude-from-classmap": [
438 | "/Tests/"
439 | ]
440 | },
441 | "notification-url": "https://packagist.org/downloads/",
442 | "license": [
443 | "MIT"
444 | ],
445 | "authors": [
446 | {
447 | "name": "Fabien Potencier",
448 | "email": "fabien@symfony.com"
449 | },
450 | {
451 | "name": "Symfony Community",
452 | "homepage": "https://symfony.com/contributors"
453 | }
454 | ],
455 | "description": "Maps an HTTP request to a set of configuration variables",
456 | "homepage": "https://symfony.com",
457 | "keywords": [
458 | "router",
459 | "routing",
460 | "uri",
461 | "url"
462 | ],
463 | "support": {
464 | "source": "https://github.com/symfony/routing/tree/v6.3.5"
465 | },
466 | "funding": [
467 | {
468 | "url": "https://symfony.com/sponsor",
469 | "type": "custom"
470 | },
471 | {
472 | "url": "https://github.com/fabpot",
473 | "type": "github"
474 | },
475 | {
476 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
477 | "type": "tidelift"
478 | }
479 | ],
480 | "time": "2023-09-20T16:05:51+00:00"
481 | }
482 | ],
483 | "packages-dev": [],
484 | "aliases": [],
485 | "minimum-stability": "stable",
486 | "stability-flags": [],
487 | "prefer-stable": false,
488 | "prefer-lowest": false,
489 | "platform": [],
490 | "platform-dev": [],
491 | "plugin-api-version": "2.6.0"
492 | }
493 |
--------------------------------------------------------------------------------