Code Duplication    Length = 25-26 lines in 2 locations

src/Factory.php 2 locations

@@ 156-180 (lines=25) @@
153
     *
154
     * @return BaseDatapackage::class
155
     */
156
    public static function getDatapackageClass($descriptor)
157
    {
158
        $datapackageClasses = array_merge(
159
            // custom classes
160
            static::$registeredDatapackageClasses,
161
            // core classes
162
            [
163
                "frictionlessdata\\datapackage\\Datapackages\TabularDatapackage",
164
                "frictionlessdata\\datapackage\\Datapackages\DefaultDatapackage",
165
            ]
166
        );
167
        $res = null;
168
        foreach ($datapackageClasses as $datapackageClass) {
169
            if (call_user_func([$datapackageClass, 'handlesDescriptor'], $descriptor)) {
170
                $res = $datapackageClass;
171
                break;
172
            }
173
        }
174
        if (!$res) {
175
            // not matched by any known classes
176
            $res = "frictionlessdata\\datapackage\\Datapackages\CustomDatapackage";
177
        }
178
179
        return $res;
180
    }
181
182
    public static function registerResourceClass($resourceClass)
183
    {
@@ 197-222 (lines=26) @@
194
     *
195
     * @return BaseResource::class
196
     */
197
    public static function getResourceClass($descriptor)
198
    {
199
        $descriptor = Utils::objectify($descriptor);
200
        $resourceClasses = array_merge(
201
            // custom classes
202
            static::$registeredResourceClasses,
203
            // core classes
204
            [
205
                'frictionlessdata\\datapackage\\Resources\\TabularResource',
206
                'frictionlessdata\\datapackage\\Resources\\DefaultResource',
207
            ]
208
        );
209
        $res = null;
210
        foreach ($resourceClasses as $resourceClass) {
211
            if (call_user_func([$resourceClass, 'handlesDescriptor'], $descriptor)) {
212
                $res = $resourceClass;
213
                break;
214
            }
215
        }
216
        if (!$res) {
217
            // not matched by any known classes
218
            $res = 'frictionlessdata\\datapackage\\Resources\\CustomResource';
219
        }
220
221
        return $res;
222
    }
223
224
    protected static $registeredDatapackageClasses = [];
225
    protected static $registeredResourceClasses = [];