小编deb*_*ian的帖子

Laravel 4测试"命令"?

我已经尝试在Laravel 4中测试我的命令,因为它们是我系统的重要组成部分,但似乎文档覆盖率很差,它们只能解释控制器和某些模型的基本测试.

在命令中,您可以通过命令行将参数传递给类,并通过$ this-> input属性接收它,我不知道如何模拟.

每当我尝试为我的命令运行测试时,当它期望"fire"方法中的参数时,我会收到此错误:

Fatal error: Call to a member function getArgument() on a non-object in /var/www/html/project/vendor/laravel/framework/src/Illuminate/Console/Command.php on line 153
Run Code Online (Sandbox Code Playgroud)

这是合乎逻辑的,没有传递任何论据.有没有办法测试这个功能?...

谢谢

php unit-testing laravel-4

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

HTTP 或 HTTPS 请求中的 GET/POST 有什么区别?

在 HTTP 或 HTTPS 协议中,GET/POST 的工作方式有什么区别吗?当您尝试嗅探数据时,HTTPS GET/POST 数据包中可以看到什么?主机IP?域名?完整的 GET 请求?成功握手后TLS隐藏了哪些信息?

我似乎无法通过查看互联网来缩小这种知识差距,只是没有提出这样的问题。

请指教,供网上参考。

https post get http

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

在自定义类/子系统中使用Laravel 4模型而不依赖于类

我正在构建一个解析器系统,它将根据请求/ cronjob解析大量不同的XML/JSON提要.我使用Laravel 4.

该线程的目的是在我的上下文中使用IoC,而不是在自定义类方法中使用硬编码的模型名称

为具有XML结构的Soccer Player提供解析器的示例,如:

<players category="Midfielders">
   <player id="777">
      <name>Caio Augusto Paim do Santos</name>
   <statistic>
      <club name="Camaçari" id="7191" league="Baiano 2" league_id="1136" season="2013" minutes="" appearences="" lineups="" substitute_in="" substitute_out="" substitutes_on_bench="" goals="" yellowcards="" yellowred="" redcards=""/>
Run Code Online (Sandbox Code Playgroud)

我在我的/ app文件夹中创建了一个名为/ parsers的附加目录.这些是自定义类,它们都在同一文件夹中扩展或实现自定义摘要/接口,并且基本上负责接收XML/JSON文件的路径并返回一个好的结构化PHP数组.

它们在autoload的composer.json中添加为: "app/parsers"

附加文件结构的屏幕截图在此输入图像描述

一切都很好,代码/类是可测试的,不依赖于另一个类,但这是问题所在.

查看XML示例,例如: <club id="XXX" league_id="YYY" /> 这是Feed俱乐部ID和Feed联盟ID,但我在数据库中有自己的ID,引用了Feed ID.

喜欢这个截图:

在此输入图像描述

所以逻辑说:转到数据库,检查联盟列表中是否有来自XML文件提供的feed_id的id.如果是,请获取它,如果没有,请创建一个新联盟并获取未来参考的ID.

这需要我在我的解析器类中使用Model,现在我知道你可以使用IoC并将模型注入到控制器中,但我不确定我是否可以对我的解析器类做同样的事情......

所以在我的解析器类中间做这样的事情:

// Try to get league and season ids from database if they already exists, if not, insert
$leagueId = DB::select('SELECT id FROM league WHERE feed_id=?', array($data['league_id']));
Run Code Online (Sandbox Code Playgroud)

要么

$league = …
Run Code Online (Sandbox Code Playgroud)

php xml parsing laravel laravel-4

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

自定义配置后,Cordova无法为Android构建

我按照这个说明为我的Cordova/Ionic项目设置了Facebook SDK:http: //ngcordova.com/docs/plugins/facebook/

对于iOS,一切运作良好,但对于Android,最后一步

cordova构建android

失败并出现奇怪的错误:

    -compile:
    [javac] Compiling 97 source files to /Users/glfx/Projects/Sportcial/platforms/android/CordovaLib/ant-build/classes
    [javac] warning: [options] source value 1.5 is obsolete and will be removed in a future release
    [javac] warning: [options] target value 1.5 is obsolete and will be removed in a future release
    [javac] warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
    [javac] /Users/glfx/Projects/Sportcial/platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebViewClient.java:35: error: cannot find symbol
    [javac] import android.webkit.ClientCertRequest;
    [javac]                      ^
    [javac]   symbol:   class ClientCertRequest
    [javac]   location: package android.webkit
    [javac] /Users/glfx/Projects/Sportcial/platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebViewClient.java:145: …
Run Code Online (Sandbox Code Playgroud)

java android phonegap-plugins cordova

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

如何在 Symfony 的 YAML 配置中调用静态方法?

我有一个使用 Symfony 组件的应用程序。一切都很顺利,直到我遇到困难,需要将 Symfony 的请求对象添加到依赖注入容器中。

这是我的配置:

parameters:
  config.project: %project_cfg%
  config.module: %module_cfg%
  config.mysql: %mysql_cfg%
  config.couch: %couch_cfg%
  request: %http_request%

services:
  request:
    class: Symfony\Component\HttpFoundation\Request
    calls:
      - [createFromGlobals]
  db:
    class: App\Core\AlarisDb
    arguments: ["%mysql_cfg%"]
  func:
    class: App\Core\AlarisFunctions
    calls:
      - [setTree, ["@tree"]]
  tree:
    class: App\Core\AlarisTree
Run Code Online (Sandbox Code Playgroud)

一切都很完美,除了请求没有正确创建,因为在 PHP 中应该这样调用:

$request = Request::createFromGlobals();
Run Code Online (Sandbox Code Playgroud)

而 YAML 配置将其称为对象的方法。有没有办法告诉它作为静态方法调用?

php symfony

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

AngularJS分成多个文件 - 只有最后一个文件有效

我遇到了一个问题,即将我的AngularJS应用程序的逻辑拆分成多个文件,这给我带来了一个问题,即只有最后一个工作,而之前的工作可能会被跳过.

这是index.html包含:

<script src="js/app.js"></script>
<script src="js/app.config.js"></script>
<script src="js/controllers/HomeController.js"></script>
Run Code Online (Sandbox Code Playgroud)

每个文件包含非常少量的逻辑:

初始化:

angular.module('sportcial', ['ionic'])
.run(function run($ionicPlatform) {
    alert(2);
    $ionicPlatform.ready(function() {
        // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
        // for form inputs)
        if(window.cordova && window.cordova.plugins.Keyboard) {
          cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
        }

        if(window.StatusBar) {
          StatusBar.styleDefault();
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

配置:

angular.module('sportcial', ['ionic']).config(function configApp($ionicConfigProvider) {
    alert(1);
    $ionicConfigProvider.tabs.position('bottom');
});
Run Code Online (Sandbox Code Playgroud)

HomeController的:

angular.module('sportcial', ['ionic'])
    .config(function config($stateProvider, $urlRouterProvider) {
        alert(3)
    })
    .controller('HomeController', ['$scope', function HomeController($scope) {
        var home = this;
    }]
);
Run Code Online (Sandbox Code Playgroud)

只有最后一个触发警报(3)...... …

javascript angularjs

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

Photon Server新手问题

我在官方的Photon Server论坛上问过这个问题,但它不如这个网站那么活跃,所以可能会有人理解我在说什么,所以,如果你有时间和知识,请分享.谢谢!

来这里......

所以,我在Photon上有一个非常好的服务器工作原型和一个与服务器对话的基本Unity3D客户端.它是根据cjrgaming上的示例构建的.

客户端可以:连接,发送请求,建立和发送加密请求服务器可以:创建对等,接收操作请求,向客户端发送操作响应或事件,以及我的小增加是:如果游戏有很多操作,你不必使用一个巨大的switch case语句,而是我将操作划分为类别(Classes),并通过使用委托和字典来调用它们.

当我觉得它已经准备好发布时,我会发布一个有效的例子,但是现在,我的实际问题......(对不起,很长的帖子,我不得不解释我所知道的和迄今为止的内容):

什么是从客户端发送到服务器的实际操作?或者服务器向客户端提出的事件(所有客户端一次性?)?

起初,我认为每个操作都是游戏中特定的用户流程.例如,操作代码"1"表示玩家X想要射击玩家Y,做某事.但是,我意识到,根据字节限制,您不能将所有游戏逻辑仅放在255个操作中,而不会将其扩展为short int或其他内容.

然后我发现还有一个channelID,它可以在同一个操作代码请求上有所不同......这对我来说,操作代码不是用户流,而是客户端之间相同/类似操作的数据流和服务器,channelID可用于区分要在服务器上计算的请求操作.

然后...!我意识到(哦,假我),从客户端发送到服务器的参数,反之亦然在字典中,这增加了另一层可能的用户流.

所以..现在我想要了解一些事情,但他们只是让我更加困惑.

任何人都可以简单解释一下操作/事件/ channelID的目的吗?例如,如果你做一个小型多人游戏,你会用什么来制作用户(游戏)流,比如 - >玩家击中目标,玩家拿起世界上的物品,玩家发送消息.您是否会为每个流使用唯一的操作代码,或者您通过意义分组操作并使用通道来区分请求,或者甚至在这里,您对许多用户流使用相同的channelID,并将它们与参数中的某些ID区分开来?

希望我有任何意义.

非常感谢,至少,如果有的话,请多多帮助!

c# unity-game-engine photon

3
推荐指数
1
解决办法
5860
查看次数

通过Angular指令在html模板中迭代配置数组?

我最近进入AngularJS并尝试创建一个注册表单,我将从我在其他地方广泛使用的JavaScript配置填充国家/地区列表,因此我将其保留为JS对象.

我一直在尝试在我的选择输入上使用ng-repeat-start和*-end,但它失败了.

主要问题是,如何加载国家/地区数组并在我的模板中迭代它?

编辑:30.11.2014 - 更好的例子

HTML:

<div class="form-group">
                <label for="phone">Country</label>
                <select-country ng-model="credentials.country"></select-country>
                <pre>{{credentials.country}}</pre>
            </div>
Run Code Online (Sandbox Code Playgroud)

文件:

/public/directives/countrySelector.directive.js

指令内容:

'use strict';

angular.module('app', [])
.value('countries', [
    {name: 'Afghanistan', code: 'AF'},
    {name: 'Åland Islands', code: 'AX'}
])
.directive('selectCountry', ['countries', function (countries) {
    function link (scope, element, attrs) {
        scope.countries = countries;
    }

    return {
        template: '<select ng-options="country[1] as country[0] for country in countries"' +
        '        ng-model="credentials.country">' +
        '</select>',
        link: link,
        scope: {
            credentialsCountry: '='
        }
    };
}]);
Run Code Online (Sandbox Code Playgroud)

javascript angularjs angularjs-directive

3
推荐指数
1
解决办法
505
查看次数

使用symfony容器服务时,代码完成无效

我在我的Symfony 2应用程序中使用FOSUserBundle,并想知道如何在PHPStorm中进行代码完成工作,因为当您通过容器注入服务时:

$userManager = $this->container->get('fos_user.user_manager');
Run Code Online (Sandbox Code Playgroud)

并尝试使用$ userManager来查看其界面 - 我什么也看不见,因为对于PHPStorm,这是一个常规变量,而不是通过"new"运算符构建的对象.

有没有办法让它向我展示这个对象的可用方法?

就像我们通常使用真实对象一样: 在此输入图像描述

谢谢!

code-completion autosuggest symfony phpstorm fosuserbundle

3
推荐指数
1
解决办法
726
查看次数

从具有不同命名空间的类动态创建新对象

我正在尝试为我的数据库创建一个小的RESTful API,我遇到了一个基于用户请求动态创建控制器对象的问题,因为我的所有代码都在使用命名空间,只是这样做:

$api = new $controllerName($request);
Run Code Online (Sandbox Code Playgroud)

不行.因为$controllerName会解析为"ReadController",但实际上\controllers\lottery\ReadController是错误

定义类的路径的整个部分是:

if ($method === 'GET') {
    $controllerName = 'ReadController';
    // @NOTE: $category is a part of $_GET parameters, e.g: /api/lottery <- lottery is a $category
    $controllerFile = CONTROLLERS.$category.'/'.$controllerName.'.php';
    if (file_exists($controllerFile)) {
        include_once($controllerFile);

        $api = new $controllerName($request);
    } else {
        throw new \Exception('Undefined controller');
    }
}
Run Code Online (Sandbox Code Playgroud)

并在core\controllers\lottery\ReadController.php中声明ReadController

namespace controllers\lottery;

class ReadController extends \core\API {

}
Run Code Online (Sandbox Code Playgroud)

任何想法如何动态创建对象?

谢谢!

php oop namespaces

2
推荐指数
1
解决办法
1656
查看次数

未经授权的客户端:客户端无权使用此方法检索访问令牌

我是一名拥有近 300 名用户的 GSuite 管理员,我正在从 GSuite 迁移。我需要下载他们创建/上传的所有用户文件。

我从编写一个 Python 脚本开始,该脚本将在列表中向我显示用户文件,并且似乎我遇到了压倒性的授权问题。

  1. 我在 Google Console 中创建了一个项目,并创建了一个带有私钥(基于 json)和 GSuite 域范围委托复选框的服务帐户
  2. 在我的 GSuite 管理面板中,我在管理 API 访问中添加了新创建的客户端 ID 和权限范围到这些范围: https://www.googleapis.com/auth/drive,https://www.googleapis.com/auth/admin.datatransfer,https://www.googleapis.com/auth/admin.directory.user, https://www.googleapis.com/auth/admin.directory.group

根据文档(https://developers.google.com/admin-sdk/directory/v1/guides/delegation)非常好

  1. 我正在从 ServiceAccountCredentials 创建一个资源对象,并分别基于 API 名称/版本“drive”和“v3”构建一个对象,并尝试根据 Google 的快速入门(https://developers.google.com/drive)获取文件列表/api/v3/quickstart/python):

     from googleapiclient.discovery import build
     from oauth2client.service_account import ServiceAccountCredentials
    
     SERVICE_ACCOUNT_EMAIL = "drive-getter@mygoogledomain.iam.gserviceaccount.com"
     SERVICE_ACCOUNT_PKCS12 = "./service_key.json"
    
     def create_directory_service(user_email):
       credentials = ServiceAccountCredentials.from_json_keyfile_name(SERVICE_ACCOUNT_PKCS12, scopes=['https://www.googleapis.com/auth/drive'])
       credentials = credentials.create_delegated(user_email)
    
       return build('drive', 'v3', credentials=credentials)
    
    
     resource = create_directory_service('username@mydomain.com')
    
     results = resource.files().list(
       pageSize=10, fields="nextPageToken, files(id, name)"
     ).execute()
    
     items = …
    Run Code Online (Sandbox Code Playgroud)

python oauth google-api google-drive-api google-oauth

2
推荐指数
1
解决办法
3337
查看次数

Phalcon路由器不响应子文件夹和名称空间声明

因此,我一直在阅读大量的stackoverflow和phalcon论坛线程。(我开始讨厌这个框架),但是似乎没有任何效果,例如,它不能解释为什么像Laravel这样工作。

我只是想能够使用此应用程序结构进行操作:

在此处输入图片说明

如您所见,我想要的只是在子文件夹中使用命名空间控制器来为我的代码设置更多顺序。

根据所有解释,这是我的loader.php:

<?php

$loader = new \Phalcon\Loader();

/**
 * We're a registering a set of directories taken from the configuration file
 */
$loader->registerDirs(
    array(
        $config->application->controllersDir,
        $config->application->modelsDir,
        $config->application->pluginsDir
    )
)->register();
Run Code Online (Sandbox Code Playgroud)

AFAIK,当通过registerDirs使用时,Phalcon应该遍历所有未找到类的子文件夹。

然后,在基本目录中指向索引控制器的主要路由之后,定义到特定控制器的路由:

<?php

$router = new Phalcon\Mvc\Router(false);

$router->add('/:controller/:action/:params', array(
    'namespace' => 'App\Controllers',
    'controller' => 1,
    'action' => 2,
    'params' => 3,
));

$router->add('/:controller', array(
    'namespace' => 'App\Controllers',
    'controller' => 1
));

$router->add('/soccer/soccer/:controller', array(
    'namespace' => 'App\Controllers\Soccer',
    'controller' => 1
));

$router->add('/soccer/:controller/:action/:params', array(
    'namespace' => 'App\Controllers\Soccer',
    'controller' => 1,
    'action' …
Run Code Online (Sandbox Code Playgroud)

php phalcon phalcon-routing

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