Git Product home page Git Product logo

ouzo's Introduction

Ouzo Framework

Ouzo is a PHP MVC framework with built-in ORM and util libraries. PHP 8.2 or later is required.

Build Status Build Status Documentation Status Coverage Status Latest Stable Version Total Downloads License Average time to resolve an issue

Join the chat at https://gitter.im/letsdrink/ouzo

We believe in clean code and simplicity. We value unit testing and beautiful design.

Want to know more?

For ideas, questions, discussions write to [email protected].

Current release

See the release notes and latest documentation.

Contributing to Ouzo

  • Don't hesitate to ask questions on mailing list or submit issues on github.
  • If you know the answer to questions/problems that others have then go ahead and reply.
  • Found something unclear in docs or app messages? Let us know and help us improve Ouzo.
  • If you miss a feature - check out issues, maybe it is already addressed. If not, drop us an example of what you need (issues or mailing list).
  • Want to help? Browse the issues and grab something to work on!
  • How to contribute? Create a fork and start a branch. Let us know when you are done, we will discuss it and merge your pull request.

General rules

  • We encourage you to use PhpStorm IDE for Ouzo development.
  • Write a test. Or tests. The more the better.
  • Make sure to run a full test suite before you send us a PR.
  • Don't forget to update the docs!
  • And the changelog as well.

Support for PHP versions older than 8.2

Ouzo has dropped support for PHP versions older than 8.2 since Ouzo 3.x. If you want to use Ouzo with PHP 5.6 or 7.x, please try Ouzo 1.x branch, for PHP 8.0 use 2.x branch.

ouzo's People

Contributors

andrzejo avatar bbankowski avatar danon avatar dominik59 avatar gitter-badger avatar grzeg1 avatar iczechowski avatar ilyapokamestov avatar karpol avatar krzycho1997 avatar ksucherek avatar lukiqs avatar mareckii avatar piotrooo avatar woru avatar zmuda avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ouzo's Issues

Model::convert

Add a static method to create objects from array of attributes.

Delete REST

We need something that allows us to use DELETE method, now we must create form with appropriate method. Maybe some helper to generate this automatically?

Query cache

disabled by default
evict cache after every update/insert, transaction rollback

Refactor Db class

query should not execute anything.
There should be a method e.g. 'execute' that returns affected rows.

Order routes

If I set routes:

Route::get('/albums/search', 'albums#search');
Route::resource('albums');

It's OK. But if I:

Route::resource('albums');
Route::get('/albums/search', 'albums#search');

Request /albums/search has wrong match.
Try compare to first GET /albums/:id.

Session directory

Framework uses wrong session dir:

Session::startSession():17
$path = "/tmp" . str_replace('panel2.0', '', $config['prefix_system']) . "thulium_sess";

Redirect in routes

Add redirect in routes.

Proposition:

Route::get('/', Redirect::to('/users'));
Route::get('/', Redirect::toAbsolute('http://ouzoframework.org'));

DB column types

I have column type bool in the mysql dialect, and I try to get value of this column:

$bool = $model->my_bool_column;
var_dump($bool);

I receive string(1) "0" if false or string(1) "1" if true.

Wrong function parameter

ViewHelper::addFile parameter: $panel2_0.

function addFile(array $fileInfo = array(), $panel2_0 = true).

ControllerTestCase cleanup

assertions names are inconsistent e.g. assertDownloadFile (should be assertDownloadsFile).

Some of them are strange like assertRendersNotEqualContent.

assertAttributesEquals seems not to be used.

ArrayAssert add contains sequence

Add method to checking sequences array values.

[aaa, bbb, ccc, ddd, eee]->containsSequence('ccc', 'ddd') - Ok
[aaa, bbb, ccc, ddd, eee]->containsSequence('ccc', 'eee') - Fail

Nested forms

We don't have a possibility to create nested forms, e.g.:

<input name="user[phone_number][]" type="text"/>
<input name="user[phone_number][]" type="text"/>
<input name="user[phone_number][]" type="text"/>

add joins to Model::findById() and Model::all()

e.g.
User::findById(23, [ 'with' => 'children', 'join' => 'department']);
or
User::findById(23, [ 'include' => 'children', 'join' => 'department']);

User::all([ 'include' => 'children', 'join' => 'department']);

new api for 'on' clause in joins

Ticket::alias('t')

        ->leftJoin('customers')->alias('rt')->on('user_id' => '3')
        ->join('customers', Joins::left()->alias('rt')->on('user_id' => '3'))
        ->join(Joins::left('customers')->as('rt')->on('rt.user_id' => '3'))
        ->leftJoin('customers', 'rt', array('rt.user_id' => '3')

Change syntax of Config->overrideProperty

Right now it is ugly:

Config::overrideProperty(array('db', 'dialect'), 'postgres'));

New proposal:

Config::overrideProperty('db', 'dialect')->with('postgres');

It will be compliant with other methods in Config class (e.g. Config::clearProperty('db', 'dialect');)

Form builder

In the Form::textField() doesn't have possibility to pass $options parameter.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.