Frameworkless, 在技术上还是一个框架

分享于 

6分钟阅读

GitHub

  繁體 雙語
How I use PHP without a framework
  • 源代码名称:Frameworkless
  • 源代码网址:http://www.github.com/mmeyer724/Frameworkless
  • Frameworkless源代码文档
  • Frameworkless源代码下载
  • Git URL:
    git://www.github.com/mmeyer724/Frameworkless.git
    Git Clone代码到本地:
    git clone http://www.github.com/mmeyer724/Frameworkless
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/mmeyer724/Frameworkless
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    Frameworkless

    一个非常简单的例子就是将一些流行的包组合到你自己的微框架中。

    为什么?

    教育。

    除非你有一个非常有说服力的理由去做,否则我不建议构建你自己的框架。 相反,使用受欢迎的&良好的框架,比如 SymfonySlim或者Laravel。

    包含的内容?

    我花了一些时间挑选包,更喜欢现有大型应用程序或者框架所使用的包。 以下是包含的内容,不按特定顺序执行:

    开始使用 Vagrant

    先决条件步骤
    • git clone 这里存储库
    • cd 进入克隆存储库
    • composer install
    • cp misc/.env.example. env
    • cp misc/Vagrantfile.
    • vagrant up

    从这里,你应该能够访问 http://localhost:8080/。 这里网站使用 Nginx & PHP 7提供服务。

    Docker 入门

    先决条件步骤
    • git clone 这里存储库
    • cd 进入克隆存储库
    • composer install
    • cp misc/.env.example. env
    • cp misc/Dockerfile.
    • cp misc/docker-compose.yml.
    • docker-compose up

    运行 docker-compose port application 80 查找这里应用程序正在运行的public 端口。

    电池不包括

    我故意让这个项目尽可能简单。 许多事情都由你来设计和实现。 另外,你不需要删除很多样板文件。

    在下面你会发现如何实现一些东西,你可以自由地贡献更多的例子:)。

    ( 数据库)

    编辑 bootstrap/app.php 并添加以下内容:

    $container->add('PDO')->withArgument(getenv('DB_CONN'))->withArgument(getenv('DB_USER'))->withArgument(getenv('DB_PASS'));

    你还需要向 .env 中添加一些值

    
    # Database access
    
    
    DB_CONN=mysql:host=127.0.0.1;dbname=frameworkless;charset=utf8
    
    
    DB_USER=fwl_user
    
    
    DB_PASS=hopefullysecure
    
    
    
    

    现在,从一个控制器:

    private$pdo;publicfunction__construct(PDO$pdo){$this->pdo=$pdo;}publicfunctionget(){$handle=$this->pdo->prepare('SELECT*FROM`todos`');$handle->execute();returnnewJsonResponse($handle->fetchAll(PDO::FETCH_ASSOC));}

    点( 数据库,ORM )

    
    composer require vlucas/spot2
    
    
    
    

    在这里,编辑 bootstrap/app.php 并添加以下内容:

    $db=newSpotConfig();$db->addConnection('mysql', ['dbname'=>getenv('DB_NAME'),'user'=>getenv('DB_USER'),'password'=>getenv('DB_PASS'),'host'=>getenv('DB_HOST')]);$container->add('SpotLocator')->withArgument($db);

    你还需要向 .env 中添加一些值

    
    # Database access
    
    
    DB_CONN=mysql:host=127.0.0.1;dbname=frameworkless;charset=utf8
    
    
    DB_USER=fwl_user
    
    
    DB_PASS=hopefullysecure
    
    
    
    

    现在你可以创建模型 ! 我建议将它们添加到一个 src/模型目录下进行分离。 例如 src/Models/Posts.php:

    namespaceFrameworklessModels;useSpotEntity;classPostsextendsEntity{protectedstatic$table='posts';// etc.}

    最后从你的控制器:

    private$spot;publicfunction__construct(SpotLocator$spot){$this->spot=$spot;}publicfunctionget(){$posts=$this->spot->mapper('FrameworklessModelsPosts')->all();returnnewResponse('Here are your posts '.print_r($posts, true));}

    提交请求请求:) 我将很友好

    感谢 @waxim 提供现场范例

    感谢 @jaakkytt 来清除这里自述文件的一部分

    感谢你提供免费的@Luciam91,提供支持


      framework  
    相关文章