composer.json
{
"name": "zendframework/skeleton-application",
"description": "Skeleton Application for Zend Framework zend-mvc applications",
"type": "project",
"license": "BSD-3-Clause",
"keywords": [
"framework",
"mvc",
"zf"
],
"homepage": "http://framework.zend.com/",
"minimum-stability": "dev",
"prefer-stable": true,
"require": {
"php": "^5.6 || ^7.0",
"zendframework/zend-component-installer": "^1.0 || ^0.7 || ^1.0.0-dev@dev",
"zendframework/zend-mvc": "^3.0.1",
"zfcampus/zf-development-mode": "^3.0",
"doctrine/doctrine-orm-module": "1.1.*"
},
"autoload": {
"psr-4": {
"Application\\": "module/Application/src/"
}
},
"autoload-dev": {
"psr-4": {
"ApplicationTest\\": "module/Application/test/"
}
},
"extra": [],
"scripts": {
"cs-check": "phpcs",
"cs-fix": "phpcbf",
"development-disable": "zf-development-mode disable",
"development-enable": "zf-development-mode enable",
"development-status": "zf-development-mode status",
"post-create-project-cmd": [
"@development-enable"
],
"serve": "php -S 0.0.0.0:8080 -t public public/index.php",
"test": "phpunit"
},
"require-dev": {
"zendframework/zend-developer-tools": "1.2.1"
}
}
zf2_orm/config/modules.config.php
<?php
/**
* @link http://github.com/zendframework/ZendSkeletonApplication for the canonical source repository
* @copyright Copyright (c) 2005-2016 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
/**
* List of enabled modules for this application.
*
* This should be an array of module namespaces used in the application.
*/
return [
'DoctrineModule',
'DoctrineORMModule',
'Zend\Router',
'Zend\Validator',
'Application',
];
zf2_orm/module/Application/config/module.config.php
<?php
/**
* @link http://github.com/zendframework/ZendSkeletonApplication for the canonical source repository
* @copyright Copyright (c) 2005-2016 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
namespace Application;
use Zend\Router\Http\Literal;
use Zend\Router\Http\Segment;
use Zend\ServiceManager\Factory\InvokableFactory;
return [
'doctrine' => [
'driver' => [
// defines an annotation driver with two paths, and names it `my_annotation_driver`
'Application_driver' => [
'class' => \Doctrine\ORM\Mapping\Driver\AnnotationDriver::class,
'cache' => 'array',
'paths' => [
__DIR__ . '/../src/Entity',
],
],
// default metadata driver, aggregates all other drivers into a single one.
// Override `orm_default` only if you know what you're doing
'orm_default' => [
'drivers' => [
// register `my_annotation_driver` for any entity under namespace `My\Namespace`
'Application\Entity' => 'Application_driver',
],
],
],
],
'controllers' => [
'factories' => [
Controller\IndexController::class => function($container){
return new Controller\IndexController($container);
},
],
],
'router' => [
'routes' => [
'home' => [
'type' => Literal::class,
'options' => [
'route' => '/',
'defaults' => [
'controller' => Controller\IndexController::class,
'action' => 'index',
],
],
],
'application' => [
'type' => Segment::class,
'options' => [
'route' => '/application[/:action]',
'defaults' => [
'controller' => Controller\IndexController::class,
'action' => 'index',
],
],
],
],
],
'view_manager' => [
'display_not_found_reason' => true,
'display_exceptions' => true,
'doctype' => 'HTML5',
'not_found_template' => 'error/404',
'exception_template' => 'error/index',
'template_map' => [
'layout/layout' => __DIR__ . '/../view/layout/layout.phtml',
'application/index/index' => __DIR__ . '/../view/application/index/index.phtml',
'error/404' => __DIR__ . '/../view/error/404.phtml',
'error/index' => __DIR__ . '/../view/error/index.phtml',
],
'template_path_stack' => [
__DIR__ . '/../view',
],
],
];
zf2_orm/config/autoload/global.php
<?php
/**
* Global Configuration Override
*
* You can use this file for overriding configuration values from modules, etc.
* You would place values in here that are agnostic to the environment and not
* sensitive to security.
*
* @NOTE: In practice, this file will typically be INCLUDED in your source
* control, so do not include passwords or other sensitive information in this
* file.
*/
return [
'doctrine' => [
'connection' => [
// default connection name
'orm_default' => [
'driverClass' => \Doctrine\DBAL\Driver\PDOMySql\Driver::class,
'params' => [
'host' => '127.0.0.1',
'port' => '3306',
'user' => 'root',
'password' => '123456',
'dbname' => 'zhdc',
'driverOptions' => [
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'
]
],
],
],
],
];
zf2_orm/module/Application/src/Entity/Users.php
<?php
/**
* Created by PhpStorm.
* User: zhudechao
* Date: 2019/1/11
* Time: 下午12:28
*/
namespace Application\Entity;
use Doctrine\ORM\Mapping as ORM;
class Users
{
/**
* @ORM\Column(name="id", type="integer", options={"comment"=""})
*/
protected $id;
/**
* @ORM\Column(name="name", type="string", length=255, nullable=true, options={"comment"=""})
*/
protected $name;
/**
* @ORM\Column(name="num", type="integer", options={"comment"=""})
*/
protected $num;
public function setId($id)
{
$this->id = $id;
return $this;
}
public function getId()
{
return $this->id;
}
public function setName($name)
{
$this->name = $name;
return $this;
}
public function getName()
{
return $this->name;
}
public function setNum($num)
{
$this->num = $num;
return $this;
}
public function getNum()
{
return $this->num;
}
}
zf2_orm/module/Application/src/Controller/IndexController.php
<?php
/**
* @link http://github.com/zendframework/ZendSkeletonApplication for the canonical source repository
* @copyright Copyright (c) 2005-2016 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
namespace Application\Controller;
use Application\Entity\Users;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
class IndexController extends BaseController
{
protected $container;
public function __construct($container = null)
{
$this->container = $container;
}
public function indexAction()
{
$sm = $this->container->get('Doctrine\ORM\EntityManager');
//PDO
$conn = $sm->getConnection();
$res = $conn->prepare('SELECT * FROM tb_books');
$res->execute();
$red = $res->fetchAll();
foreach($red as $data){
echo $data['name'].' - '.$data['author'];
echo '<br>';
}
exit;
return new ViewModel();
}
}
案例:链接:https://pan.baidu.com/s/1ADl1D0OiiiKRTbOk3U2k4g 密码:pv17