小编kit*_*sei的帖子

zf2将参数传递给服务工厂

我有以下课程:

  • CommonService
  • 客户服务
  • InvoiceService

我想基于url加载一个工厂(用于DI)的正确类:

  • CommonService:localhost/service/common
  • ClientService:localhost/service/client
  • InvoiceService:localhost/service/invoice

现在我正试图避免为我的每一项服务创建一个工厂,我想以恐怖的方式做到这一点:

<?php namespace App\Service\Factory;

use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;

class ServiceFactory implements FactoryInterface
{
    /**
     * Create service
     * @param ServiceLocatorInterface $serviceLocator
     * @return \App\Service\AbstractService
     */
    public function createService(ServiceLocatorInterface $serviceLocator)
    {
        $servicename = ''; // how can I get something like this, based on the route ?
        $service = $serviceLocator->get('Service\' . $servicename . 'Service');
    }
}
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我想避免计算工厂内的路线,因为如果有一天这个工厂将从其他地方调用,它将无法工作.

那么你如何基本上做一个工厂" 处理创建对象的问题而不用 zend 2 指定将要创建的对象的确切类 "?

编辑 - 使用解决方案

再次编辑,这里是我根据接受的答案首选的最终解决方案:

$apiName = str_replace(' …
Run Code Online (Sandbox Code Playgroud)

dependency-injection factory-pattern zend-framework2

9
推荐指数
1
解决办法
5045
查看次数

Laravel连接到SQL Server 2008命名实例

我正在尝试从Ubuntu机器连接一个SQL服务器,除了命名实例之外,每个方法都很好用:

这很有效

'data' => array(
            'driver'   => 'sqlsrv',
            'host'     => 'xxxx',
            'port'     => 1433,
            'database' => 'db',
            'username' => 'user',
            'password' => 'pwd',
            'prefix'   => '',
        ),
Run Code Online (Sandbox Code Playgroud)

这不

  'data' => array(
                'driver'   => 'sqlsrv',
                'host'     => 'yyyy\NAMEDINSTANCE',
                'port'     => 1433,
                'database' => 'db',
                'username' => 'user',
                'password' => 'pwd',
                'prefix'   => '',
            ),
Run Code Online (Sandbox Code Playgroud)

我总是最终得到这个错误:

exception 'PDOException' with message 'SQLSTATE[HY000] Unknown host machine name (severity 2)' in /var/www/public/my.api/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:47
Run Code Online (Sandbox Code Playgroud)

我尝试了所有可能的组合:

  • 主持人\ INSTANCE
  • 主持人/实习
  • 主持人\\实例

有人能帮我吗 ?

编辑 …

php sql-server freetds laravel

7
推荐指数
1
解决办法
5259
查看次数

Laravel 依赖注入与继承

假设我有以下情况:

<?php

abstract class Service {

    protected $config;

    public function __construct($config)
    {
        $this->config = $config;
    }
}

class ClientService extends Service {

}

class ProductService extends Service {

}
Run Code Online (Sandbox Code Playgroud)

是否可以在我的服务提供者中注册我服务的抽象父类的依赖注入?

我有一个从规范动态生成的 API,并且这些类中的每一个都必须扩展abstract Service它,以便它可以继承基本功能。

实例化子 Service 时,如何在抽象服务中注入依赖项?


编辑:这个问题是专门针对抽象类注入提出的,无法绑定自动生成的子类。

php dependency-injection laravel

6
推荐指数
1
解决办法
2218
查看次数

Laravel包注册异常处理程序

我想知道是否可以在Laravel 5的包中注册第二个异常处理程序.

我有一个包(让我们称之为api-serializer)注册一个中间件来将所有请求转换为JSON(对于一个API)和这个包注册2个助手:success()并且failure()在发生错误时(或不发生)特别处理json.

在我的应用程序异常处理程序中,我执行以

/**
 * Render an exception into an HTTP response.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Exception  $e
 * @return \Illuminate\Http\Response
 */
public function render($request, Exception $e)
{
    return failure($e->getMessage());
}
Run Code Online (Sandbox Code Playgroud)

现在我有第二个包(让我们称之为tumblr-api),它可以进行http调用并引发异常,例如:

throw (new CustomCoolException)->setModel($model);
Run Code Online (Sandbox Code Playgroud)

我想以不同的方式对待这个异常,因为消息位于,$model像这样做:

if ($e instanceof CustomCoolException) {
    return failure($e->getModel()->getMessage());
}
Run Code Online (Sandbox Code Playgroud)

什么我不想做这是我的包例外添加到我的主要异常处理程序,因为他们会紧密绑定.

我既不想在暴露的api-serializersuccess()failure()我的tumblr-api包之间创建依赖关系.

是否有可能从我的api-serializer注册第二个ExceptionHandler或为它的异常添加特定的开关而不改变其他任何东西?

我想让我的tumblr-api包尽可能独立,所以安装它的用户只需注册服务提供商即可!

php service-provider laravel-5

6
推荐指数
1
解决办法
1491
查看次数

AngularJS动画元素

我想在我的angularjs应用程序中添加一些动画,并在运球上冲浪我发现了这个例子:

材料设计动画

有人能指出我达到这个效果的正确方向吗?是否有一些图书馆在做这项工作还是完全是手工艺的?

注意2个动画,前面的黄色按钮扩展到整个区域,后面区域滑动/消失

animation angularjs angular-material

6
推荐指数
1
解决办法
582
查看次数

添加/?批量切换?

有人知道如何使用/调用我的批处理文件时添加要触发的操作吗?争论?我总是使用-h来显示用法,但是有一次我需要我的-h arg用于别的东西.

编辑:其实我已经尝试解析这样的属性

for %%i in (%*) do ....
Run Code Online (Sandbox Code Playgroud)

/?争论被跳过,我会尝试你的解决方案,看看它是否不同.

顺便说一句,为什么当你解析%%我/?args被跳过?

batch-file

5
推荐指数
1
解决办法
1552
查看次数

AngularJS模板中的"Controller as"

我是AngularJS世界的新手,我正在尝试按照本教程设置一个基本的laravel/angular JWT auth .

我想做的是,使用"Controller As"语法而不是$scope教程中所述的语法.现在,我在这里:

app.js

var app = angular.module('app', ['ngRoute']);
app.run(function () {});
app.config(function ($routeProvider, $locationProvider) {
    $routeProvider.when('/', {
        templateUrl: 'js/templates/login.html',
        controller: 'LoginController'
    });
});
Run Code Online (Sandbox Code Playgroud)

登录控制器

angular.module('app')

    .controller('LoginController', function ($scope) {
        this.title='toto';
        this.data = {};
        this.submit = function () {
            console.log(this.data);
        };
    });
Run Code Online (Sandbox Code Playgroud)

管理员视图

<!doctype html>
<html lang="en">
    <head>
        <title>Blog Administration</title>
        <!--css-->
        <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css"/>

        <!--js-->
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

        <!--angular-->
        <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.4/angular.js"></script>
        <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.4/angular-route.js"></script>
        <script src="js/app.js"></script>
        <script src="js/controllers/loginController.js"></script>
    </head>
    <body ng-app="app">
        <div id="wrapper">
            <div class="container" …
Run Code Online (Sandbox Code Playgroud)

javascript binding angularjs

5
推荐指数
1
解决办法
6487
查看次数

laravel/angularjs JWT令牌刷新

我在角度/ laravel应用程序中实现JWT身份验证,我遇到令牌刷新问题.

这里有相关代码:

PHP:laravel-jwt监听器'监听' tymon.jwt.expired事件:

    /**
     * Fired when the token has expired
     * @param \Exception $e
     * @return \Illuminate\Http\JsonResponse
     */
    public function expired($e)
    {
        $token = \JWTAuth::parseToken();

        Config::package('tymon/jwt-auth', 'jwt');
        $ttl = Config::get('jwt::refresh_ttl');

        $iat = Carbon::createFromTimestamp($token->getPayload()->get('iat'));
        $now = Carbon::now();

        // if renew ttl is expired too, return 401, otherwise let
        // the application generate a new token to frontend
        if ($iat->diffInMinutes($now) >= $ttl) {
            unset($iat, $now, $ttl);
            return response_failure(
                Lang::get('errors.api.auth.expired'),
                Config::get('status.error.unauthorized')
            );
        }

        unset($iat, $now, $ttl);
    }
Run Code Online (Sandbox Code Playgroud)

PHP:'后'过滤器:

/* …
Run Code Online (Sandbox Code Playgroud)

javascript php jwt angularjs laravel-4

5
推荐指数
1
解决办法
3557
查看次数

Laravel 5创建后的雄辩负载模型属性

在创建雄辩的模型时:

Model::create(['prop1' => 1, 'prop2' => 2]);
Run Code Online (Sandbox Code Playgroud)

返回的模型只有prop1&prop2作为属性,我可以做什么来急切加载我没有插入数据库的所有其他属性,因为它们是可选的?

编辑:为什么我需要这个?重命名我的数据库字段:

数据库

CREATE TABLE `tblCustomer` (
    `pkCustomerID` INT(11) NOT NULL AUTO_INCREMENT,
    `baccount` VARCHAR(400) NULL DEFAULT NULL,
    `fldName` VARCHAR(400) NULL DEFAULT NULL,
    `fldNumRue` VARCHAR(10) NULL DEFAULT NULL,
    ....
    PRIMARY KEY (`pkCustomerID`)
);
Run Code Online (Sandbox Code Playgroud)

客户模型

<?php namespace App\Models;

/**
 * Class Customer
 * @package App\Models
 * @property int code
 * @property string name
 * @property string addressno
 */
class Customer extends Model
{
    protected $table = 'tblCustomer';
    protected $primaryKey = …
Run Code Online (Sandbox Code Playgroud)

php laravel eloquent laravel-5

5
推荐指数
1
解决办法
3960
查看次数

扭曲的脚本问题

我在应用程序bin部署/usr/bin期间编写了一个Twisted 文件,基于AxiomStackOverflow 上其他地方提供的示例(我不记得在哪里),可以在这里找到项目.

我的问题是,在此python setup.py install过程中,安装的bin文件与Axiom包中的文件不同:

在/ usr/bin中/不言自明

#!/code/venv/bin/python
from axiom.scripts import axiomatic
axiomatic.main()
Run Code Online (Sandbox Code Playgroud)

在/ usr/bin中/ MYAPP

#!/code/venv/bin/python
# EASY-INSTALL-DEV-SCRIPT: 'MyApp==0.0.1','myapp'
__requires__ = 'MyApp==0.0.1'
__import__('pkg_resources').require('MyApp==0.0.1')
exec(compile(open(__file__).read(), __file__, 'exec'))
Run Code Online (Sandbox Code Playgroud)

从bash shell调用后者时后者不起作用: myapp start

我收到以下错误: unknow command myapp

如果我使用python setup.py develop而不是python setup.py install一切顺利.


我已经设置了一个小测试应用程序,它在端口1234上启动tcp服务:

  • 该命令twistd finger 有效,服务启动
  • 命令fingerize start(故意使用不同的名称,以确保不会调用错误的名称)不起作用

这是代码:

斌/ fingerize

#!/usr/bin/python
from finger import tap
tap.main()
Run Code Online (Sandbox Code Playgroud)

扭转/插件/ finger_plugin.py

from twisted.application.service import …
Run Code Online (Sandbox Code Playgroud)

python twisted twistd

5
推荐指数
1
解决办法
410
查看次数