我有以下课程:
我想基于url加载一个工厂(用于DI)的正确类:
现在我正试图避免为我的每一项服务创建一个工厂,我想以恐怖的方式做到这一点:
<?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) 我正在尝试从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)
我尝试了所有可能的组合:
有人能帮我吗 ?
编辑 …
假设我有以下情况:
<?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 时,如何在抽象服务中注入依赖项?
编辑:这个问题是专门针对抽象类注入提出的,无法绑定自动生成的子类。
我想知道是否可以在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包尽可能独立,所以安装它的用户只需注册服务提供商即可!
我想在我的angularjs应用程序中添加一些动画,并在运球上冲浪我发现了这个例子:
有人能指出我达到这个效果的正确方向吗?是否有一些图书馆在做这项工作还是完全是手工艺的?
注意2个动画,前面的黄色按钮扩展到整个区域,后面区域滑动/消失
有人知道如何使用/调用我的批处理文件时添加要触发的操作吗?争论?我总是使用-h来显示用法,但是有一次我需要我的-h arg用于别的东西.
编辑:其实我已经尝试解析这样的属性
for %%i in (%*) do ....
Run Code Online (Sandbox Code Playgroud)
但/?争论被跳过,我会尝试你的解决方案,看看它是否不同.
顺便说一句,为什么当你解析%%我的/?args被跳过?
我是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) 我在角度/ 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) 在创建雄辩的模型时:
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) 我在应用程序bin
部署/usr/bin
期间编写了一个Twisted 文件,基于Axiom
StackOverflow 上其他地方提供的示例(我不记得在哪里),可以在这里找到项目.
我的问题是,在此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)