Skip to content

Commit aa5cdc1

Browse files
committed
Generated the rest of .md files and build llms-full with updated content. New layout to 404 twig
1 parent 3903c81 commit aa5cdc1

168 files changed

Lines changed: 23515 additions & 449 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

public/readme/android/listen-for-android-install-referrer.md renamed to public/llms-content/android/listen-for-android-install-referrer.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,15 @@ language: "en"
1212

1313
## Getting Referrer Data at Install Time
1414

15-
Android market sends information at the moment of app install, delivered as a broadcasted intent by Android market at install time - even before the app is opened for the first time. This can be used to create custom links to an Android application, including bits of information about the referrer, sent directly to the app for processing at install. It can be a simple and accurate solution for mobile app install tracking, among other uses.
15+
Android market sends information at the moment of app install, delivered as a broadcasted intent by Android market at install time - even before the app is opened for the first time.
16+
This can be used to create custom links to an Android application, including bits of information about the referrer, sent directly to the app for processing at install.
17+
It can be a simple and accurate solution for mobile app install tracking, among other uses.
1618

1719
## FAQ
1820

1921
**Q: Does Android send information when the app is installed?**
20-
A: Yes. Android market broadcasts an intent containing referrer information at the moment the app is installed.
22+
A: Yes.
23+
Android market broadcasts an intent containing referrer information at the moment the app is installed.
2124

2225
**Q: When is this referrer information available to the app?**
2326
A: It's delivered as a broadcasted intent at install time, before the app is ever opened.

public/readme/android/multiple-broadcast-receivers-in-the-same-app-for-the-same-action.md renamed to public/llms-content/android/multiple-broadcast-receivers-in-the-same-app-for-the-same-action.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ language: "en"
1212

1313
## The problem
1414

15-
When multiple broadcast receivers are registered separately to listen for the same intent within the same Android app, this can lead to unexpected results: one broadcast receiver might consume the broadcasted intent, leaving the others with nothing to receive. This can happen when using 3rd party libraries that define their own broadcast receivers alongside an app's own receivers.
15+
When multiple broadcast receivers are registered separately to listen for the same intent within the same Android app, this can lead to unexpected results: one broadcast receiver might consume the broadcasted intent, leaving the others with nothing to receive.
16+
This can happen when using 3rd party libraries that define their own broadcast receivers alongside an app's own receivers.
1617

1718
## The approach
1819

public/readme/architecture/configprovider-bootstrap-modern-php-applications.md renamed to public/llms-content/architecture/configprovider-bootstrap-modern-php-applications.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,13 @@ language: "en"
1212

1313
## TL;DR
1414

15-
In PHP, a `ConfigProvider` is a class or callable that is part of an application's bootstrap process, returning configuration data that tells the platform which middleware should run, in what order, and under what conditions. Frameworks like Mezzio, Laminas, Slim, and the Dotkernel Headless Platform use ConfigProviders to declare middleware pipeline configuration, dependency injection mappings, and request handlers, which get merged together automatically during bootstrap (except in Dotkernel, where new ConfigProviders must be registered manually).
15+
In PHP, a `ConfigProvider` is a class or callable that is part of an application's bootstrap process, returning configuration data that tells the platform which middleware should run, in what order, and under what conditions.
16+
Frameworks like Mezzio, Laminas, Slim, and the Dotkernel Headless Platform use ConfigProviders to declare middleware pipeline configuration, dependency injection mappings, and request handlers, which get merged together automatically during bootstrap (except in Dotkernel, where new ConfigProviders must be registered manually).
1617

1718
## Where Is the ConfigProvider Used?
1819

19-
Mezzio (formerly Zend Expressive), Laminas, Slim, the Dotkernel Headless Platform, and other middleware-based frameworks often have a `ConfigProvider` class. In Laminas/Mezzio specifically, each module or package may contain a `ConfigProvider` that returns:
20+
Mezzio (formerly Zend Expressive), Laminas, Slim, the Dotkernel Headless Platform, and other middleware-based frameworks often have a `ConfigProvider` class.
21+
In Laminas/Mezzio specifically, each module or package may contain a `ConfigProvider` that returns:
2022

2123
- Middleware pipeline configuration:
2224
- Middleware classes or service names.
@@ -80,7 +82,8 @@ The ConfigProvider is automatically picked up by the framework during applicatio
8082
- **Modular** - Each package can ship with its own config without interfering with others.
8183
- **Container-friendly** - Works well with frameworks using DI containers like Laminas ServiceManager, PHP-DI, or Pimple.
8284
- **Standardized service definitions** - Consistent rules for object creation, separate from business logic.
83-
- **Auto-Discovery** - In Laminas/Mezzio, the ConfigAggregator automatically loads and merges all ConfigProviders. Dotkernel is an exception: new ConfigProviders have to be added manually in `config/config.php`, because all the initial ConfigProviders required to install the applications are already injected.
85+
- **Auto-Discovery** - In Laminas/Mezzio, the ConfigAggregator automatically loads and merges all ConfigProviders.
86+
Dotkernel is an exception: new ConfigProviders have to be added manually in `config/config.php`, because all the initial ConfigProviders required to install the applications are already injected.
8487
- **Environment-agnostic** - Returns an array that defines dev, test, or prod environments.
8588
- **Testability** - The consistent, central configuration promotes isolated (e.g. per-module) testing, easier swapping of dependencies, and assertion of pipeline setup (e.g. checking if a config key is present).
8689

@@ -93,7 +96,8 @@ A: It is a class that is part of an application's bootstrap process: a class or
9396
A: In the Laminas/Mezzio ecosystem, it's literally an array of configuration, settings, or anything else the application needs, and each module or package may contain its own ConfigProvider returning middleware pipeline configuration, dependency injection mappings, and request handlers.
9497

9598
**Q: What is the difference between 'factories' and 'invokables' in the dependencies array?**
96-
A: `factories` will have the factory build the service, while `invokables` will use `new` directly. You can also use `aliases` to redirect to another service name and `delegators` to wrap the original service.
99+
A: `factories` will have the factory build the service, while `invokables` will use `new` directly.
100+
You can also use `aliases` to redirect to another service name and `delegators` to wrap the original service.
97101

98102
**Q: How does the ConfigProvider get used during application bootstrap?**
99103
A: It is automatically picked up by the framework during bootstrap: all ConfigProviders are merged into one array, the configuration array is read, each item is resolved via `$app->pipe()`, the error-handling middleware is placed last in the pipeline, and at runtime Laminas Stratigility iterates over the pipeline in the order it was registered.

public/readme/architecture/request-lifecycle-for-a-mezzio-based-application.md renamed to public/llms-content/architecture/request-lifecycle-for-a-mezzio-based-application.md

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,33 +12,44 @@ language: "en"
1212

1313
## TL;DR
1414

15-
The request lifecycle is the sequence of steps that happen from the moment a user makes an HTTP request until the server sends back a response. This is illustrated using Dotkernel Light, one of the applications in the Dotkernel Headless Platform suite, walking through entry point setup, routing, handler execution, template rendering, response creation, and the response emitter.
15+
The request lifecycle is the sequence of steps that happen from the moment a user makes an HTTP request until the server sends back a response.
16+
This is illustrated using Dotkernel Light, one of the applications in the Dotkernel Headless Platform suite, walking through entry point setup, routing, handler execution, template rendering, response creation, and the response emitter.
1617

1718
## The Request Lifecycle, Step by Step
1819

1920
### Entry Point
2021

2122
1. **HTTP Request** - Bootstrap the application, load configuration and create the Mezzio application instance.
22-
2. **Service Container** - Register factories, aliases and delegators. All services are configured and ready to use.
23-
3. **Route Registration** - Read all available routes with their allowed request methods and dynamically register them in the application. Routes are managed by FastRoute. Example: `/page/about` -> `GetPageViewHandler`, Method: `GET`, Route name: `page::about`.
24-
4. **Middleware Pipeline** - Loads the predefined order of middleware. It defines how incoming HTTP requests move through the application and how responses are generated.
23+
2. **Service Container** - Register factories, aliases and delegators.
24+
All services are configured and ready to use.
25+
3. **Route Registration** - Read all available routes with their allowed request methods and dynamically register them in the application.
26+
Routes are managed by FastRoute.
27+
Example: `/page/about` -> `GetPageViewHandler`, Method: `GET`, Route name: `page::about`.
28+
4. **Middleware Pipeline** - Loads the predefined order of middleware.
29+
It defines how incoming HTTP requests move through the application and how responses are generated.
2530

2631
### Processing
2732

28-
5. **Routing** - FastRoute matches the URL and method against registered routes. Match: `GET /page/about`, Handler: `GetPageViewHandler`, Route name: `page::about`.
33+
5. **Routing** - FastRoute matches the URL and method against registered routes.
34+
Match: `GET /page/about`, Handler: `GetPageViewHandler`, Route name: `page::about`.
2935
6. **Handler Invocation** - Extract the matched route name from the request and pass it to the renderer:
3036
```php
3137
$template = $request->getAttribute(RouteResult::class)->getMatchedRouteName();
3238
// $template = 'page::about';
3339
```
34-
7. **Custom Logic Execution in Handler** - Execute the business logic in the handler. The process can involve services and any custom logic.
35-
8. **Template Rendering** - Twig loads the template, applies the layout, renders blocks and includes partials. Load: `src/Page/templates/page/about.html.twig`, Extends: `@layout/default.html.twig`, Render blocks: `title`, `content`, Include partials: `alerts.html.twig`, etc., Output: Final HTML.
36-
9. **Response Creation** - An `HtmlResponse` is created with status, headers and the rendered HTML body. Status: `200 OK`, Content-Type: `text/html; charset=utf-8`, Body: Rendered HTML.
37-
10. **Response Pipeline** - The response flows back through the middleware stack. Middleware can modify headers, cookies, compress content, etc.
40+
7. **Custom Logic Execution in Handler** - Execute the business logic in the handler.
41+
The process can involve services and any custom logic.
42+
8. **Template Rendering** - Twig loads the template, applies the layout, renders blocks and includes partials.
43+
Load: `src/Page/templates/page/about.html.twig`, Extends: `@layout/default.html.twig`, Render blocks: `title`, `content`, Include partials: `alerts.html.twig`, etc., Output: Final HTML.
44+
9. **Response Creation** - An `HtmlResponse` is created with status, headers and the rendered HTML body.
45+
Status: `200 OK`, Content-Type: `text/html; charset=utf-8`, Body: Rendered HTML.
46+
10. **Response Pipeline** - The response flows back through the middleware stack.
47+
Middleware can modify headers, cookies, compress content, etc.
3848

3949
### Exit Point
4050

41-
11. **Response Emitter** - The final response is sent back to the browser. The page is rendered and sent to the user, as one of `HTTP 20x/30x`, `HTTP 40x`, or `HTTP 50x`.
51+
11. **Response Emitter** - The final response is sent back to the browser.
52+
The page is rendered and sent to the user, as one of `HTTP 20x/30x`, `HTTP 40x`, or `HTTP 50x`.
4253

4354
## FAQ
4455

@@ -58,7 +69,8 @@ A: The matched route name is extracted from the request attribute and passed to
5869
A: Twig loads the matched template file, applies the layout it extends, renders its blocks, and includes any partials, producing the final HTML output.
5970

6071
**Q: How is the response created and returned to the browser?**
61-
A: An `HtmlResponse` is created with a status code, headers, and the rendered HTML body. It then flows back through the middleware stack in reverse (the response pipeline), where middleware can modify headers, cookies, or compress content, before the response emitter sends the final response back to the browser as HTTP 20x/30x, 40x, or 50x.
72+
A: An `HtmlResponse` is created with a status code, headers, and the rendered HTML body.
73+
It then flows back through the middleware stack in reverse (the response pipeline), where middleware can modify headers, cookies, or compress content, before the response emitter sends the final response back to the browser as HTTP 20x/30x, 40x, or 50x.
6274

6375
## Resources
6476

0 commit comments

Comments
 (0)