Giter Club home page Giter Club logo

framework's Introduction

Bow Framework

To use this package, please create an application from this package bowphp/app

The Framework Main Feature

  • Full-featured database classes with support for several platforms.
  • Query Builder Database Support
  • Form and Data Validation
  • Security and XSS Filtering
  • Data Encryption
  • Session Management
  • Controller Revolver
  • Middleware Support
  • Small and Robust Routing
  • File Uploading Class
  • Pagination
  • CQRS helpful implementation
  • File System Management with many drivers like S3 and FTP (Support connection switch)
  • Extensible with an external package that can plug in
  • Application logs Management
  • Database Connection (MySQL, SQLite, PostgreSQL)
  • Simplest ORM which is named Barry
  • Cache support (Filesystem, Redis, Database caching)
  • Event Management (Interpage Event)
  • Emailing (SMTP, SES, Native PHP mail supports)
  • Task runner (Which helps you to generate the controller and match more)
  • Unit Testing Support
  • View Rendering with bowphp/tintin package (Tintin is the very small php template)
  • Very easy Translate Management
  • Many helpers
  • The native authentication system
  • Producer/Consumer with beanstalkd, database, Redis, SQS backend

Contributing

Thank you for considering contributing to Bow Framework! The contribution guide is in the framework documentation.

Contact

[email protected] - @papacdev

Please, if there is a bug on the project contact me by email or leave me a message on Slack. or join us on Slask

framework's People

Contributors

detygon avatar houssenedao avatar juvpengele avatar kylekatarnls avatar papac avatar peter279k 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

framework's Issues

[4.0] Can parse the PUT Request data

  • Version: 4.0
  • PHP Version: 7.2
  • Database Driver & Version: Mysql

Description:

The PUT Request data is parse when the content type is application/json and not x-www-form-urlencoded etc...

Steps To Reproduce:

Send the request with PUT method in any route bind the PUT method.

[4.0] Add seed helper

Idea

You can create a seed helper like this seed('users', 5); for make programmic seeding.

Eg: we can use it in the unity test.

public function testDeleteUser()
{
   // We can seed the user if is necessary
   seed('users', 2);

   $response = $this->delete('/api/v1/users/1');
   $response->assertStatus(200);
   ....
}

[4.0] Cannot update the model data

  • Version: 4.0
  • PHP Version: 7.2
  • Database Driver & Version: Mysql

Steps To Reproduce:

To create the user you can make this

$user = App\User::first();

$user->name = "Bow";
$user->save();

// And you save again
$user->save();
// That error occured 

How to debug it:

Considered the line 469 to 480 of the src/Database/Barry/Model.php

$update_data = [];

foreach ($this->attributes as $key => $value) {
   if (!isset($this->original[$key]) || $this->original[$key] != $value) {
       $update_data[$key] = $value;
   }
}

In this code we collect the necessary values to make update. So, when there are not value and $update_data is empty. The final update SQL Query equal to update table set where (id = :id).

[4.0] Enhance Bow\Security\Hash class

Description:

@papac, this is about enhancing Hash class.

I've notice that the Hash class uses the PASSWORD_BCRYPT const directly.

It's not friendly because developers cannot choose their desired password hash algorithms.

My suggestions are as follows:

  • Using the configuration to set the current password hash algorithms.
    And setting the PASSWORD_BCRYPT constraint value by default.
  • Adding the constructor in Hash class to let developers set current setting before using the Hash class to do password hash work.

Throw uncaught error wrong parameters from View:172

  • Version: 3.1.5
  • PHP Version: 7.2.10
  • Database Driver & Version: Mysql|Sqlite

Description:

When i add Engine to the view system raide an error. This is occur when de Engine is not valid.

Steps To Reproduce:

View::pushEngine('twig', IsNotAvailableClass::class);

Undefined variable `$value`

  • Version: 3.0.1
  • PHP Version: 7.2.*
  • Database Driver & Version: Mysql

Description:

When i call the rest method this error is raised.
Undefined variable $value in Rest::make method

Steps To Reproduce:

That arrived when i do this:
In this router ficher

<?php

$app->rest('/todos', 'TodoController');

Consider removing master branch only in Travis CI build

Description:

@papac , this is about Travis CI build on specific branches.

I think it doesn't make sense to let this repository run Travis CI build only on master branch.

We should make sure repository on active branch should be worked/passed in Travis CI build successfully.

My suggested solutions are as follows:

  • Remove master branch only definition in Travis CI build. Make all current branches running CI build.
  • Keep mater branch only existed and add other branches with regular expression in .travis.yml setting.

I prefer first solution because it can make sure all oncoming branches (including branches are from PRs)
can be passed/worked in Travis CI build.

References

[4.0] Enhance Bow\Security\Crypto class

Description:

@papac . This is about Enhance Bow\Security\Crypto class enhancement.

I've found that this class uses openssl to do encryption and decryption works.

It's not good because the sodium is available since the php-7.x versions are released.

I recommend we should change the openssl encryption/decryption to sodium.

It would be better than openssl because of modern Cryptography security :).

References

Middleware additionnal parameters not parse

  • Version: 3.0.3
  • PHP Version: 7.2

Description:

Middleware additionnal parameters is merge with middleware alias name.

Steps To Reproduce:

$app->get()->middleware('api:guest')

Undefined index: middeware

  • Version: 3.0.3
  • PHP Version: 7.2

Description:

Undefined index: middeware in Bow\Application\Application::route

        ...
        if (isset($cb['middleware'])) {
            unset($cb['middleware']);
        }
 
        if (isset($cb['controller'])) {
            unset($cb['controller']);
        }
 
        $route = $this->pushHttpVerbe($method, $path, $cb);
 
        if (isset($definition['middleware'])) {
            $route->middleware($definition['middeware']);
        }
 
        $route->where($where);
    }

Steps To Reproduce:

when i call $app->route() in a apply middleware option with ['middleware' => 'guest']

vipconsult/proftpd has been problematic

  • Version: master

Description:

It's about the Travis CI build.

The vipconsult/proftp Docker image has been problematic because it will present docker: Error response from daemon: invalid mode: /etc/proftpd/ftpd.passwd when running Docker image as container.

We can look at this Travis CI build log to know detailed situation.

As we can look at log, I remove -d from the docker run --net=host --name proftpd -v $(pwd)/:/home/$FTP_USER vipconsult/proftpd command.

It will present chown: cannot access '/etc/proftpd/ftpd.passwd': No such file or directory message.

Suggested solution

  • I think we can use other FTP server Docker images instead.

@papac, do you have any idea about other Docker images about FTP server?

bug after migration class generated

  • PHP Version: 7.2.*
  • Database Driver & Version: Mysql|Sqlite

Description:

The migration class name is incorrect, 20181018080355Test

<?php

use Bow\Database\Migration\Schema;
use Bow\Database\Migration\Migration;
use Bow\Database\Migration\TablePrinter as Printer;

class 20181018080355Test extends Migration
{
    /**
     * create Table
     */
    public function up()
    {
        Schema::create("table", function(Printer $table) {
            //
        });
    }

    /**
     * Drop Table
     */
    public function down()
    {
        Schema::dropIfExists("table");
    }
}

[4.0] Undefined index: key in validation data

  • Version: 4.0.4
  • PHP Version: 7.2.0
  • Database Driver & Version: Mysql

Description:

Undefined index: name in file .../vendor/bowphp/framework/src/Validation/Validator.php on line 273

Steps To Reproduce:

When we make the validation on undefined key in the validation data this error is occured.

Translate: Arraydotify param error

  • Version: 3.0.2
  • PHP Version: 7.2.*
  • Database Driver & Version: Mysql|Sqlite

Description:

There are an error, when the translation dictionnary file do not return array and i use the service.

Steps To Reproduce:

in components/lang/fr/welcome.php

<?php
// Empty

and I use Transalor::translate('welcome.greeting').

framework test fails

An error occurred during the tests. Due to the absence of the autoload.php file

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.