1

「デフォルト」という名前のモジュールを作成したところ、アプリケーションがその時点で動作を停止したようです。

これは私が使用したスクリプトです(「デフォルト」以外の名前で機能します):

#!/bin/bash

die () {
    echo >&2 "$@"
    exit 1
}

[ "$#" -eq 1 ] || die "1 argument required (module name), $# provided"


cd module;

#add check if module name already exists

var="$1"
OUTPUT=${var,,}
echo $OUTPUT

mkdir -pv $1/{config,src/$1/{Controller,Form,Model},view/$OUTPUT/$OUTPUT};

cd $1;

echo "<?php
// module/$1/Module.php
namespace $1;

class Module
{
    public function getAutoloaderConfig()
    {
        return array(
            'Zend\Loader\ClassMapAutoloader' => array(
                __DIR__ . '/autoload_classmap.php',
            ),
            'Zend\Loader\StandardAutoloader' => array(
                'namespaces' => array(
                    __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
                ),
            ),
        );
    }

    public function getConfig()
    {
        return include __DIR__ . '/config/module.config.php';
    }
}
" > Module.php;

echo "<?php
// module/$1/autoload_classmap.php:
return array();
" > autoload_classmap.php;


echo "<?php
// module/$1/config/module.config.php:
return array(
    'controllers' => array(
        'invokables' => array(
            '$1\Controller\\$1' => '$1\Controller\\$1Controller',
        ),
    ),
    'view_manager' => array(
        'template_path_stack' => array(
            '$OUTPUT' => __DIR__ . '/../view',
        ),
    ),
);
" > config/module.config.php;

echo "Updating application.config"
sed -i '/modules..=>.array/,/),/ { /[^(,]$/ s//&,\n        '\'$1\''/ }' ../../config/application.config.php;

echo "Success"
4

1 に答える 1

4

php の予約語を名前空間として使用することはできません ( php のマニュアルも参照してください)。名前_Defaultなどを入れることはできますDefault_Default、それ自体は許可されていません。

于 2012-10-31T16:44:26.243 に答える