如何使用composer将框架拆分为自己的组件?

时间:2016-08-27 04:29:42

标签: git project-management git-subtree

如何从主框架包中创建子包? Laravel类似于laravel/laravel是骨架应用程序,laravel/framework是根框架包。 Symfony对symfony/framework-standard-edition执行与多个组件类似的操作。

我只想在主包下创建一些包。像这样:

Xyx
Xyz\Service
Xyz\Service\Providers\

Xyz/Service/Providers/文件夹应替换为指定的包(例如:Abc/Service/StrProvider)内容。

2 个答案:

答案 0 :(得分:2)

这些是git子树分裂。 GitHub有一个doc article。简而言之:

<?php
function uploadMain($name,$size,$arr,$way)
{
          $result = array();
          chmod("images", 0770); 
          $imagename = $_FILES[$name]["name"];
          if(!$imagename == "")
          {
           if ($_FILES[$name]["error"] == 0){ 

               if ($_FILES[$name]["size"] < $size){

                    $filename = basename($imagename);

                     $ext = strtolower(substr($filename, strrpos($filename, '.') + 1));
                     foreach($arr as $value) {

                      if ($ext == $value)
                     {
                        $string = "abcdefghijklmnopqrstuvwxyz0123456789";
                        for($i=0;$i<10;$i++){
                            $pos = rand(0,38);
                            $str .= $string{$pos};                             
                    }

                    $str .=".$ext";
                                   $imagename = $str;
                    $fileName = $_FILES[$name]["tmp_name"].".$ext";

                    //$imagetype = $_FILES['picture']['type'];

                    $dest = $way.$imagename;
                   try {
                    echo($FILES[$name]);
                    echo("<br \>"); 
                        echo($fileName);
                    echo("<br \>");
                    echo($dest);
                    var_dump(move_uploaded_file($fileName, $dest));
                    move_uploaded_file($fileName, $dest);

                   } catch (Exception $e) {
                       $result["msg"] = "error on uploading file";
                   }
                   $result[$name] = $dest;
                    }
                    else {$result["msg"] = "file type not allowed";
                    }
                  }

                 }
                else  {$result["msg"] = "file size not allowed";
                }
                } 
                    else  {$result["msg"] = "error on uploading file";
                    }
             } 
     return  $result;
}
?>

Symfony背后的公司SensioLabs已将Symfony使用的go脚本开放为split.sh lite

答案 1 :(得分:2)

2019更新!

在CLI中使用bash / git命令多年后,我制作了一个简单的PHP包装器MonorepoBuilder,非常简单地为所有开发人员使用。

1。准备配置

# monorepo-builder.yaml
parameters:
    directories_to_repositories:
        packages/CodingStandard: 'git@github.com:Symplify/CodingStandard.git'
        packages/EasyCodingStandard: 'git@github.com:Symplify/EasyCodingStandard.git'

2。运行命令

vendor/bin/monorepo-builder split

这就是全部!

您可以阅读有关此Create, Merge and Split Monorepo with 1 Command

的更多信息