• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

brick / geo / 17456208570

04 Sep 2025 07:10AM UTC coverage: 50.432%. Remained the same
17456208570

push

github

BenMorel
Use @extends and @implements instead of @template-* variants

For consistency with the rest of the project.

1867 of 3702 relevant lines covered (50.43%)

1140.21 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/MultiCurve.php
1
<?php
2

3
declare(strict_types=1);
4

5
namespace Brick\Geo;
6

7
use Brick\Geo\Projector\Projector;
8
use Exception;
9
use Override;
10

11
/**
12
 * A MultiCurve is a 1-dimensional GeometryCollection whose elements are Curves.
13
 *
14
 * MultiCurve is a non-instantiable class in this standard; it defines a set of methods for its subclasses and is
15
 * included for reasons of extensibility.
16
 *
17
 * A MultiCurve is simple if and only if all of its elements are simple and the only intersections between any two
18
 * elements occur at Points that are on the boundaries of both elements.
19
 *
20
 * The boundary of a MultiCurve is obtained by applying the "mod 2" union rule: A Point is in the boundary of a
21
 * MultiCurve if it is in the boundaries of an odd number of elements of the MultiCurve.
22
 *
23
 * A MultiCurve is closed if all of its elements are closed. The boundary of a closed MultiCurve is always empty.
24
 *
25
 * A MultiCurve is defined as topologically closed.
26
 *
27
 * @template T of Curve
28
 *
29
 * @extends GeometryCollection<T>
30
 */
31
abstract class MultiCurve extends GeometryCollection
32
{
33
    #[Override]
34
    public function project(Projector $projector): MultiCurve
35
    {
36
        throw new Exception(
×
37
            'This exception should never be thrown. ' .
×
38
            'This method is here to ensure that MultiCurve::project() has the correct return type, ' .
×
39
            'and force concrete classes below MultiCurve to return a MultiCurve, too. ' .
×
40
            'It cannot be made abstract because GeometryCollection::project() is not abstract.',
×
41
        );
×
42
    }
43
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc