Osm Admin: Stopping The Project
2 years ago ∙ 2 minutes read
I stopped working on the Osm Admin project, for financial reasons. Did it hurt? A lot. Was it necessary? Unfortunately, yes. This post is a short retrospection on this matter.
2 years ago ∙ 2 minutes read
I stopped working on the Osm Admin project, for financial reasons. Did it hurt? A lot. Was it necessary? Unfortunately, yes. This post is a short retrospection on this matter.
2 years ago ∙ 2 minutes read
My current goal is to get some minimum Osm Admin user interface and API working - just for one property, one data type, one UI control type, and then improve.
And there is a lot of space for improvement. The main areas are listed in this document.
I'd really appreciate a helping hand, so if you are into this sort of things, DM me on Twitter.
2 years ago ∙ 4 minutes read
I feel that both attributes decorating data classes, and object model parsed from it are too complex.
Let's have a fresh look at Osm Admin. If I had to start from scratch, how would it be?
2 years ago ∙ 2 minutes read
Recently, I implemented mass-editing in Osm Admin. It allows you to view and edit multiple objects in a single operation.
This article describes mass-editing of products in a typical e-commerce application.
2 years ago ∙ 3 minutes read
In the user interface, you can narrow displayed data using grid column filters, or filters displayed in the sidebar. To enable that, apply #[Filter\*]
attributes to class properties.
Applied filters appear in the URL query parameters, for example, .../edit?id=5+16+19
, and on the page.
You can apply filters not only to a grid page, but also to a form page - to mass edit all matching objects, or to an action URL (edit, delete, or custom) - to perform the action on all matching objects.
In the same way, you can apply filters to the API URLs in order to retrieve or modify matching objects in a script.
3 years ago ∙ 2 minutes read
The project repository, osmphp/admin
, follows a typical Osm Framework-based project structure. However, this repository is going to be a reusable Composer package, and has important structural differences presented in this article.
3 years ago ∙ 2 minutes read
This article introduces the core project concepts: data object, data class, data query, and data schema.
3 years ago ∙ 1 minute read
I'm super-excited to announce that I'm starting a new project codenamed "The Big Red Button". It's about defining application data structures and logic in PHP code, pressing the big red button (hence the codename), and getting fully functioning Admin Panel and API.
2021 ∙ October ∙ Osm Framework
3 years ago ∙ 1 minute read
Throw the NotImplemented
exception in any code path that is not implemented yet, and configure the debugger to stop there whenever the code path is executed.
2021 ∙ September ∙ Osm Framework
3 years ago ∙ 1 minute read
After you got a project up and running, let's have a look what's inside. Every directory has its purpose. Learn where to put your creative efforts!
Note. This post is moved to Osm Framework documentation.
2021 ∙ September ∙ Osm Framework
3 years ago ∙ 4 minutes read
In Osm Framework, an application is a set of modules that you run as a whole. There are several applications defined in the project, each having its own PHP class. Mostly, deal with the main one, Osm\App\App
. Beside the class name, every application also has a name, the main one is named Osm_App
.
Access the current application object, and the main parts of Osm Framework, via the global $osm_app
object and its properties. Add your own long-living objects there. Run an application using its HTTP or console entry point, or using Apps::run()
.
Note. This post is moved to Osm Framework documentation.
2021 ∙ September ∙ Osm Framework
3 years ago ∙ 4 minutes read
Modular software development is a well-known practice of dividing your application into several modules, each doing one thing, and doing it well. It increases readability and simplifies maintenance, as application concerns are fully separated from one another, easier to reason about, and to debug.
Modular development also encourages reuse. It's like a puzzle. Using one set of modules, you'll get an e-commerce application, using another set of modules - you'll get a blog application.
Note. This post is moved to Osm Framework documentation.
2021 ∙ September ∙ Osm Framework
3 years ago ∙ 3 minutes read
Using dynamic traits, customize anything. Inject your code in the beginning, in the end, or instead of any standard method. Even more, add new properties and methods to the existing standard classes.
Note. This post is moved to Osm Framework documentation.
2021 ∙ September ∙ Osm Framework
3 years ago ∙ 5 minutes read
Computed properties are one of Osm Framework pillars. They help to execute code only once, and only if it's actually needed. Computed properties control object serialization and caching. They provide meaningful insights into class interdependencies. Finally, computed properties are easy to test.
Note. This post is moved to Osm Framework documentation.
2021 ∙ September ∙ Osm Framework
3 years ago ∙ 2 minutes read
Osm Framework uses Monolog library for logging. Use standard loggers defined in the $osm_app->logs
object, or add your own. Control logging in the settings.{app_name}.php
and .env.{app_name}
files.
Note. This post is moved to Osm Framework documentation.
2021 ∙ August ∙ Osm Framework
3 years ago ∙ 1 minute read
Install and use osm
, osmc
, osmt
and osmh
command line aliases for faster command typing.
Note. This post is moved to Osm Framework documentation.
2021 ∙ August ∙ Osm Framework
3 years ago ∙ 1 minute read
Once PHP 8, Node and Gulp are installed, create new projects quickly using the command line.
Note. This post is moved to Osm Framework documentation.