PHPackages                             shahburhan/owa - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. shahburhan/owa

ActiveLibrary[Framework](/categories/framework)

shahburhan/owa
==============

Laravel Package for object oriented design with actions

v1.1.1(3y ago)09MITPHPPHP &gt;=7.2.5

Since Feb 8Pushed 3y ago1 watchersCompare

[ Source](https://github.com/shahburhan/owa)[ Packagist](https://packagist.org/packages/shahburhan/owa)[ RSS](/packages/shahburhan-owa/feed)WikiDiscussions 1.x Synced 1mo ago

READMEChangelog (3)DependenciesVersions (5)Used By (0)

Laravel Object Oriented Design With Actions
===========================================

[](#laravel-object-oriented-design-with-actions)

Object oriented structural design for creating objects coupled together with actions

Highlights
----------

[](#highlights)

- This package considers every Model as an Object and creates the Objects and Actions based on that concept.
- This package introduces the concept of Object Actions which promotes segregation of any Object (\\App\\Object{object}) related business logic into dedicated Action (\\App\\Objects{object}\\Actions{action}) classes.
- An action can use argument count as a means to differentiate between action types or sub actions.
- Every Action extends an abstract class (Action) and is required to implement a public take method on it.

How to use Actions
------------------

[](#how-to-use-actions)

- There are two ways to initiate/use an action
- An action can be called directly by instantiating an Action class and calling it's take method

```
    $action     = new ActionName;
    $response   = $action->take($args);

```

- Or using the base class, an action can be initiated by following the syntax

```
    $response = Action::ObjectNameActionName($args);

```

This is can be percived both as syntactical sugar and a reductor in your number of lines of code as it saves you from importing all the Action classes. You only import the base Action class.

Namespace
---------

[](#namespace)

All your Objects by default go in \\App\\Objects and Actions go in the Actions directory of a particular object. The same can be configured in the owa config file

- app
    - Objects
        - ExampleObject
            - Actions
                - ExampleAction.php

Nomenclature/Conventions
------------------------

[](#nomenclatureconventions)

For the purpose of consistency a specific naming convention is followed primarily with routing(optional) and action names.

- Every action is named in the format name of the action followed by the suffix **Action**.

    - Example: For a search action, the action class will be named *SearchAction.php*.
- The route defination convention is optional but can be followed in accordance with an object and route specific action, following the course **base\_url/object/action**.

    - Example: If we are searching for a store, we will probably have an action in the Store object named SearchAction. The route for the same according to above convention will be *base\_url/store/search*
- If a route is an active record route or a SingularAction\*, it can be followed by the same object/action convention for active record specific sub actions

    - Example if we have a store and we want to search an item within that store and we have a SearchAction in Item Object, the route will be defined as *base\_url/store/{store\_reference}/item/search*
- The route conventions are for the sake of easily discovering the source files and is totally optional.

\[\*\] SingularActions are those actions where there is an identifier passed in the url instead of an action name. Eg. For a specific store we might have an endpoint like **base\_url/store/{store\_reference}**

###  Health Score

21

—

LowBetter than 19% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity47

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~59 days

Total

4

Last Release

1377d ago

PHP version history (2 changes)v1.0PHP ^7.2.5

v1.1.1PHP &gt;=7.2.5

### Community

Maintainers

![](https://www.gravatar.com/avatar/c3f664cc30a10296443f74df4b5d2bad6bf2dd7e9ad34474cf5c271bff5c0d99?d=identicon)[shahburhan](/maintainers/shahburhan)

---

Top Contributors

[![shahburhan](https://avatars.githubusercontent.com/u/4582579?v=4)](https://github.com/shahburhan "shahburhan (10 commits)")

### Embed Badge

![Health badge](/badges/shahburhan-owa/health.svg)

```
[![Health](https://phpackages.com/badges/shahburhan-owa/health.svg)](https://phpackages.com/packages/shahburhan-owa)
```

###  Alternatives

[laravel/telescope

An elegant debug assistant for the Laravel framework.

5.2k67.8M192](/packages/laravel-telescope)[spiral/roadrunner

RoadRunner: High-performance PHP application server and process manager written in Go and powered with plugins

8.4k12.2M84](/packages/spiral-roadrunner)[nolimits4web/swiper

Most modern mobile touch slider and framework with hardware accelerated transitions

41.8k177.2k1](/packages/nolimits4web-swiper)[laravel/dusk

Laravel Dusk provides simple end-to-end testing and browser automation.

1.9k36.7M259](/packages/laravel-dusk)[laravel/prompts

Add beautiful and user-friendly forms to your command-line applications.

708181.8M596](/packages/laravel-prompts)[cakephp/chronos

A simple API extension for DateTime.

1.4k47.7M121](/packages/cakephp-chronos)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
