私は理解できませんなぜ私はカスタムサービスを作成できません。私は両方の技術でエラーが発生します。私はあなたの文書の中で何も見つけられません。カスタムサービスを追加 - Symfony; Sylius
# app/config/services.yml
services:
jdf.utils.phphelper:
class: JDF\Utils\PhpHelper
// src/JDF/Utils/PhpHelper.php
namespace JDF\Utils;
class PhpHelper
{
/**
* [pdebug description]
* @param string $var The string to beautiful show
* @param string $msg Description of the $var
* @param integer $displayNone
* @return echo pre print_r $var string
*/
public function pdebug ($var, $msg = '', $displayNone = 0) {
}
}
ケース1:(__construct関数のパスPhpHelper)
// src/JDF/CsvTreatmentBundle\Controller/ImportController
namespace JDF\CsvTreatmentBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use JDF\Utils\PhpHelper;
use Psr\Log\LoggerInterface;
/**
*
*/
class ImportController extends Controller {
function __construct(
PhpHelper $PhpHelper
) {
}
public function indexAction() {
//$test = $this->container->get('jdf.utils.phphelper');
return new Response('<hr>');
}
} /*End of class*/
エラー1: キャッチできる致命的なエラー:JDFに渡された引数1 \ CsvTreatmentBundle \ Controller \ ImportController :: __ construct()はJDF \ Utils \ PhpHelperのインスタンスでなければならず、指定されていない場合はC:\ kitutilitaire \ vendor \ symfonyの\ symfonyの\ SRC \ symfonyの\コンポーネントライン202上の\ HttpKernel \コントローラ\ ControllerResolver.phpと 500内部サーバーエラーが定義されて - ContextErrorException
ケース2(単に取得する()コントローラメソッドを使用します):
// src/JDF/CsvTreatmentBundle\Controller/ImportController
namespace JDF\CsvTreatmentBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use JDF\Utils\PhpHelper;
use Psr\Log\LoggerInterface;
/**
*
*/
class ImportController extends Controller {
function __construct(
//PhpHelper $PhpHelper
// LoggerInterface $logger
) {
}
public function indexAction() {
$test = $this->container->get('jdf.utils.phphelper');
// $logger = $this->container->get('logger');
return new Response('<hr>');
}
} /*End of class*/
エラー2: は、名前空間 "JDF \ Utilsの" からクラス "PhpHelper" をロードしようとしました。 別の名前空間に「使用」ステートメントを忘れましたか?
スタックトレース
in var\cache\dev\appDevDebugProjectContainer.php at line 3555 -
*/
protected function getJdf_Utils_PhphelperService()
{
return $this->services['jdf.utils.phphelper'] = new \JDF\Utils\PhpHelper();
}
/**
EDIT:あなたの助けをadvenceでcomposer.jsonの自動ロード
"autoload": {
"psr-4": {
"AppBundle\\": "src/AppBundle/",
"JDF\\CsvTreatmentBundle\\": "src/JDF/CsvTreatmentBundle/",
"JDF\\Utils\\": "src/JDF/Utils/PhpHelper"
},
"classmap": ["app/AppKernel.php", "app/AppCache.php"]
},
ありがとうございます。
サービスをservices.ymlでどのように定義しますか?私は私のservices.yml(最初のコードショー)を書いた – Xenofexs
@ Xenofexs:あなたは正しい、私の悪いです。私は答えを更新しました。 – colburton
更新していただきありがとうございます。ケース2で編集しました。編集しました。私はこの行をunvolontaryで削除しました。 このコードでは、error2(名前空間 "JDF \ Utils"からクラス "PhpHelper"を読み込もうとしました。) あなたは別の名前空間に "use"ステートメントを忘れていましたか?) そして、行バグ: 'return $ this-> services ['jdf.utils.phphelper'] = new \ JDF \ Utils \ PhpHelper();' – Xenofexs