PHPackages                             mivek/php-metar-taf-parser - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Parsing &amp; Serialization](/categories/parsing)
4. /
5. mivek/php-metar-taf-parser

AbandonedArchivedLibrary[Parsing &amp; Serialization](/categories/parsing)

mivek/php-metar-taf-parser
==========================

A php library to decode metar and taf messages

1.0.0(6y ago)2412[1 issues](https://github.com/mivek/PHPMetarTafParser/issues)MITPHPPHP ^7.2

Since Dec 8Pushed 6y ago1 watchersCompare

[ Source](https://github.com/mivek/PHPMetarTafParser)[ Packagist](https://packagist.org/packages/mivek/php-metar-taf-parser)[ RSS](/packages/mivek-php-metar-taf-parser/feed)WikiDiscussions master Synced 6d ago

READMEChangelog (1)Dependencies (2)Versions (2)Used By (0)

PHPMetarTafParser
=================

[](#phpmetartafparser)

[![Build Status](https://camo.githubusercontent.com/2b7222a1c21983d074eac915697cf89b016f3bccc39dff56a21274b2b3deffe9/68747470733a2f2f7472617669732d63692e6f72672f6d6976656b2f5048504d657461725461665061727365722e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/mivek/PHPMetarTafParser)[![Coverage](https://camo.githubusercontent.com/7fa7cc21b27a9ffcbb01a17f3023b5566f9ad307176416423ee16a0b8916b312/68747470733a2f2f736f6e6172636c6f75642e696f2f6170692f70726f6a6563745f6261646765732f6d6561737572653f70726f6a6563743d6d6976656b5f5048504d65746172546166506172736572266d65747269633d636f766572616765)](https://sonarcloud.io/dashboard?id=mivek_PHPMetarTafParser)[![Maintainability Rating](https://camo.githubusercontent.com/3dd5001d0783436db4008ca370b27f7cfd6cc9f5e788131a29f1bc2e81ce73ea/68747470733a2f2f736f6e6172636c6f75642e696f2f6170692f70726f6a6563745f6261646765732f6d6561737572653f70726f6a6563743d6d6976656b5f5048504d65746172546166506172736572266d65747269633d7371616c655f726174696e67)](https://sonarcloud.io/dashboard?id=mivek_PHPMetarTafParser)[![Quality Gate Status](https://camo.githubusercontent.com/5ba8a6e9fa567e12e2efc6719516e5dc512feb5a042555b9463dad97c8262224/68747470733a2f2f736f6e6172636c6f75642e696f2f6170692f70726f6a6563745f6261646765732f6d6561737572653f70726f6a6563743d6d6976656b5f5048504d65746172546166506172736572266d65747269633d616c6572745f737461747573)](https://sonarcloud.io/dashboard?id=mivek_PHPMetarTafParser)

PHPMetarTafParser is a library written in PHP(7.2) to parse METAR and TAF messages.

The MetarParser and the TAFParser contain a method parse returning a metar object or a TAF object.

Add dependency
--------------

[](#add-dependency)

Using composer:

```
composer require mivek/php-metar-taf-parser

```

Model
-----

[](#model)

### AbstractWeatherContainer

[](#abstractweathercontainer)

Abstract class containing the basic elements

- Wind
- Visibility
- Clouds (Cloud\[\])
- WeatherConditions (WeatherCondition\[\])
- Remark (string)
- Cavok (bool)
- VerticalVisibility (array)

### AbstractWeatherCode

[](#abstractweathercode)

Subclass of AbstractWeatherContainer.

- icao (string) ICAO of the airport
- day (int) Delivery day
- time (Time) Delivery time
- message (string) raw message

### Metar

[](#metar)

Subclass of AbstractWeatherCode

- temperature (int)
- dewPoint (int)
- altimeter (array) Array with keys `value` and `unit`
- nosig (bool)
- auto (bool)
- runwaysinfo (RunwayInfo\[\])
- trends (MetarTrend\[\])

### TAF

[](#taf)

Subclass of AbstractWeatherCode

- validity (Validity)
- minTemperature (DatedTemperature)
- maxTemperature (DatedTemperature)
- trends (TAFTrend\[\])
- probTrends (ProbTafTrend\[\])
- amendment (bool)

### RunwayInfo

[](#runwayinfo)

Represents the visibility on a runway

- name (string) Name of the runway
- trend (string)
- minRange (int)
- maxRange (int)

### Cloud

[](#cloud)

Represents a cloud layer

- Quantity (string)
- Type of cloud (string optional)
- Height of the layer (string optional)

### DatedTemperature

[](#datedtemperature)

- Temperature in celsius (int)
- Day (int)
- Hour (int)

### Time

[](#time)

Represents the delivery time of a Metar or a TAF

- Hours (int)
- Minutes (int)

### Validity

[](#validity)

Represents the validity of a TAF or of a TAFTrend

- startDay (int)
- startHour (int)
- startMinute (int)
- endDay (int)
- endHour (int)

### Visibility

[](#visibility)

Represents the visibility of a AbstractWeatherContainer

- mainVisibility : array with keys 'visibility' and 'unit'
- minVisibility : array with keys 'visibility' and 'direction'

### Wind

[](#wind)

Represents the wind element

- direction (int) The direction of the wind in degrees
- cardinalDirection (string) The cardinal direction or VRB token
- speed (int)
- unit (string) unit of the speed
- gusts (int) speed of the gusts if applicable
- variable\_wind (array) array with keys `min` and `max` containing the direction of variable wind if applicable.

### WindShear

[](#windshear)

Subclass of Wind

- height (int) Height in feet of the windshear.

Trends
------

[](#trends)

Both METAR and TAF can contain trends

AbstractTrend
-------------

[](#abstracttrend)

Abstract parent class of trend classes.

- type: string for the type of trend. Either TEMPO, BECMG, FM or PROB

MetarTrend
----------

[](#metartrend)

Class representing a trend of a metar, composed of

- times: array of MetarTrendTime to represent the times of the trend

MetarTrendTime
--------------

[](#metartrendtime)

- type (string) AT, FM or TL
- time: array of `hour` and `minute`

TafTrend
--------

[](#taftrend)

Subclass of AbstractTrend composed of

- Validity

ProbTafTrend
------------

[](#probtaftrend)

Subclass of the TafTrend composed of

- probability (int) probability of the trend

Examples:
---------

[](#examples)

### Parsing a METAR

[](#parsing-a-metar)

```
$code = "LFBG 081130Z AUTO 23012KT 9999 SCT022 BKN072 BKN090 22/16 Q1011 TEMPO 26015G25KT 3000 TSRA SCT025CB BKN050";
$metarParser = new \PHPMetarTafParser\Parser\MetarParser();
$metar = $metarParser->parse($code);
```

The result metar is:

```
PHPMetarTafParser\Model\Metar Object
(
    [temperature:PHPMetarTafParser\Model\Metar:private] => 22
    [dewPoint:PHPMetarTafParser\Model\Metar:private] => 16
    [altimeter:PHPMetarTafParser\Model\Metar:private] => Array
        (
            [value] => 1011
            [unit] => hPa
        )
    [nosig:PHPMetarTafParser\Model\Metar:private] =>
    [auto:PHPMetarTafParser\Model\Metar:private] => 1
    [runwaysInfo:PHPMetarTafParser\Model\Metar:private] => Array
        (
        )
    [trends:PHPMetarTafParser\Model\Metar:private] => Array
        (
            [0] => PHPMetarTafParser\Model\Trend\MetarTrend Object
                (
                    [times:PHPMetarTafParser\Model\Trend\MetarTrend:private] => Array
                        (
                        )
                    [type:PHPMetarTafParser\Model\Trend\AbstractTrend:private] => TEMPO
                    [wind:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => PHPMetarTafParser\Model\Wind Object
                        (
                            [direction:PHPMetarTafParser\Model\Wind:private] => 260
                            [cardinalDirection:PHPMetarTafParser\Model\Wind:private] => W
                            [speed:PHPMetarTafParser\Model\Wind:private] => 15
                            [unit:PHPMetarTafParser\Model\Wind:private] => KT
                            [gust:PHPMetarTafParser\Model\Wind:private] => 25
                            [variable_wind:PHPMetarTafParser\Model\Wind:private] =>
                        )
                    [visibility:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => PHPMetarTafParser\Model\Visibility Object
                        (
                            [mainVisibility:PHPMetarTafParser\Model\Visibility:private] => Array
                                (
                                    [visibility] => 3000
                                    [unit] => m
                                )
                            [minVisibility:PHPMetarTafParser\Model\Visibility:private] =>
                        )
                    [clouds:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => Array
                        (
                            [0] => PHPMetarTafParser\Model\Cloud Object
                                (
                                    [height:PHPMetarTafParser\Model\Cloud:private] => 2500
                                    [quantity:PHPMetarTafParser\Model\Cloud:private] => SCT
                                    [type:PHPMetarTafParser\Model\Cloud:private] => CB
                                )
                            [1] => PHPMetarTafParser\Model\Cloud Object
                                (
                                    [height:PHPMetarTafParser\Model\Cloud:private] => 5000
                                    [quantity:PHPMetarTafParser\Model\Cloud:private] => BKN
                                    [type:PHPMetarTafParser\Model\Cloud:private] =>
                                )
                        )
                    [weatherConditions:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => Array
                        (
                            [0] => PHPMetarTafParser\Model\WeatherCondition Object
                                (
                                    [intensity:PHPMetarTafParser\Model\WeatherCondition:private] =>
                                    [descriptor:PHPMetarTafParser\Model\WeatherCondition:private] => TS
                                    [phenomenons:PHPMetarTafParser\Model\WeatherCondition:private] => Array
                                        (
                                            [0] => RA
                                        )
                                )
                        )
                    [windShear:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                    [cavok:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                    [remark:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                    [verticalVisibility:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                )
        )
    [icao:PHPMetarTafParser\Model\AbstractWeatherCode:private] => LFBG
    [day:PHPMetarTafParser\Model\AbstractWeatherCode:private] => 8
    [time:PHPMetarTafParser\Model\AbstractWeatherCode:private] => PHPMetarTafParser\Model\Time Object
        (
            [hours:PHPMetarTafParser\Model\Time:private] => 11
            [minutes:PHPMetarTafParser\Model\Time:private] => 30
        )
    [message:PHPMetarTafParser\Model\AbstractWeatherCode:private] => LFBG 081130Z AUTO 23012KT 9999 SCT022 BKN072 BKN090 22/16 Q1011 TEMPO 26015G25KT 3000 TSRA SCT025CB BKN050
    [wind:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => PHPMetarTafParser\Model\Wind Object
        (
            [direction:PHPMetarTafParser\Model\Wind:private] => 230
            [cardinalDirection:PHPMetarTafParser\Model\Wind:private] => SW
            [speed:PHPMetarTafParser\Model\Wind:private] => 12
            [unit:PHPMetarTafParser\Model\Wind:private] => KT
            [gust:PHPMetarTafParser\Model\Wind:private] => 0
            [variable_wind:PHPMetarTafParser\Model\Wind:private] =>
        )
    [visibility:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => PHPMetarTafParser\Model\Visibility Object
        (
            [mainVisibility:PHPMetarTafParser\Model\Visibility:private] => Array
                (
                    [visibility] => 9999
                    [unit] => m
                )
            [minVisibility:PHPMetarTafParser\Model\Visibility:private] =>
        )
    [clouds:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => Array
        (
            [0] => PHPMetarTafParser\Model\Cloud Object
                (
                    [height:PHPMetarTafParser\Model\Cloud:private] => 2200
                    [quantity:PHPMetarTafParser\Model\Cloud:private] => SCT
                    [type:PHPMetarTafParser\Model\Cloud:private] =>
                )
            [1] => PHPMetarTafParser\Model\Cloud Object
                (
                    [height:PHPMetarTafParser\Model\Cloud:private] => 7200
                    [quantity:PHPMetarTafParser\Model\Cloud:private] => BKN
                    [type:PHPMetarTafParser\Model\Cloud:private] =>
                )
            [2] => PHPMetarTafParser\Model\Cloud Object
                (
                    [height:PHPMetarTafParser\Model\Cloud:private] => 9000
                    [quantity:PHPMetarTafParser\Model\Cloud:private] => BKN
                    [type:PHPMetarTafParser\Model\Cloud:private] =>
                )
        )
    [weatherConditions:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => Array
        (
        )
    [windShear:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
    [cavok:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
    [remark:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
    [verticalVisibility:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
)

```

### Parsing a TAF

[](#parsing-a-taf)

```
$code = "TAF LSZH 292025Z 2921/3103 VRB03KT 9999 FEW020 BKN080 TX20/3014Z TN06/3003Z " .
        "PROB30 TEMPO 2921/2923 SHRA " .
        "BECMG 3001/3004 4000 MIFG NSC " .
        "PROB40 3003/3007 1500 BCFG SCT004 " .
        "PROB30 3004/3007 0800 FG VV003 " .
        "BECMG 3006/3009 9999 FEW030 " .
        "PROB40 TEMPO 3012/3017 30008KT";

$tafParser = new \PHPMetarTafParser\Parser\TAFParser();
$taf = $tafParser->parse($code);
```

The result object is:

```
PHPMetarTafParser\Model\TAF Object
(
    [validity:PHPMetarTafParser\Model\TAF:private] => PHPMetarTafParser\Model\Validity Object
        (
            [startDay:PHPMetarTafParser\Model\Validity:private] => 29
            [startHour:PHPMetarTafParser\Model\Validity:private] => 21
            [startMinute:PHPMetarTafParser\Model\Validity:private] =>
            [endDay:PHPMetarTafParser\Model\Validity:private] => 31
            [endHour:PHPMetarTafParser\Model\Validity:private] => 3
        )
    [minTemperature:PHPMetarTafParser\Model\TAF:private] => PHPMetarTafParser\Model\DatedTemperature Object
        (
            [temperature:PHPMetarTafParser\Model\DatedTemperature:private] => 6
            [day:PHPMetarTafParser\Model\DatedTemperature:private] => 30
            [hour:PHPMetarTafParser\Model\DatedTemperature:private] => 3
        )
    [maxTemperature:PHPMetarTafParser\Model\TAF:private] => PHPMetarTafParser\Model\DatedTemperature Object
        (
            [temperature:PHPMetarTafParser\Model\DatedTemperature:private] => 20
            [day:PHPMetarTafParser\Model\DatedTemperature:private] => 30
            [hour:PHPMetarTafParser\Model\DatedTemperature:private] => 14
        )
    [trends:PHPMetarTafParser\Model\TAF:private] => Array
        (
            [0] => PHPMetarTafParser\Model\Trend\TafTrend Object
                (
                    [validity:PHPMetarTafParser\Model\Trend\TafTrend:private] => PHPMetarTafParser\Model\Validity Object
                        (
                            [startDay:PHPMetarTafParser\Model\Validity:private] => 30
                            [startHour:PHPMetarTafParser\Model\Validity:private] => 1
                            [startMinute:PHPMetarTafParser\Model\Validity:private] =>
                            [endDay:PHPMetarTafParser\Model\Validity:private] => 30
                            [endHour:PHPMetarTafParser\Model\Validity:private] => 4
                        )
                    [type:PHPMetarTafParser\Model\Trend\AbstractTrend:private] => BECMG
                    [wind:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                    [visibility:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => PHPMetarTafParser\Model\Visibility Object
                        (
                            [mainVisibility:PHPMetarTafParser\Model\Visibility:private] => Array
                                (
                                    [visibility] => 4000
                                    [unit] => m
                                )
                            [minVisibility:PHPMetarTafParser\Model\Visibility:private] =>
                        )
                    [clouds:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => Array
                        (
                            [0] => PHPMetarTafParser\Model\Cloud Object
                                (
                                    [height:PHPMetarTafParser\Model\Cloud:private] => 0
                                    [quantity:PHPMetarTafParser\Model\Cloud:private] => NSC
                                    [type:PHPMetarTafParser\Model\Cloud:private] =>
                                )
                        )
                    [weatherConditions:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => Array
                        (
                            [0] => PHPMetarTafParser\Model\WeatherCondition Object
                                (
                                    [intensity:PHPMetarTafParser\Model\WeatherCondition:private] =>
                                    [descriptor:PHPMetarTafParser\Model\WeatherCondition:private] => MI
                                    [phenomenons:PHPMetarTafParser\Model\WeatherCondition:private] => Array
                                        (
                                            [0] => FG
                                        )
                                )
                        )
                    [windShear:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                    [cavok:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                    [remark:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                    [verticalVisibility:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                )
            [1] => PHPMetarTafParser\Model\Trend\TafTrend Object
                (
                    [validity:PHPMetarTafParser\Model\Trend\TafTrend:private] => PHPMetarTafParser\Model\Validity Object
                        (
                            [startDay:PHPMetarTafParser\Model\Validity:private] => 30
                            [startHour:PHPMetarTafParser\Model\Validity:private] => 6
                            [startMinute:PHPMetarTafParser\Model\Validity:private] =>
                            [endDay:PHPMetarTafParser\Model\Validity:private] => 30
                            [endHour:PHPMetarTafParser\Model\Validity:private] => 9
                        )
                    [type:PHPMetarTafParser\Model\Trend\AbstractTrend:private] => BECMG
                    [wind:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                    [visibility:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => PHPMetarTafParser\Model\Visibility Object
                        (
                            [mainVisibility:PHPMetarTafParser\Model\Visibility:private] => Array
                                (
                                    [visibility] => 9999
                                    [unit] => m
                                )
                            [minVisibility:PHPMetarTafParser\Model\Visibility:private] =>
                        )
                    [clouds:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => Array
                        (
                            [0] => PHPMetarTafParser\Model\Cloud Object
                                (
                                    [height:PHPMetarTafParser\Model\Cloud:private] => 3000
                                    [quantity:PHPMetarTafParser\Model\Cloud:private] => FEW
                                    [type:PHPMetarTafParser\Model\Cloud:private] =>
                                )
                        )
                    [weatherConditions:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => Array
                        (
                        )
                    [windShear:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                    [cavok:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                    [remark:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                    [verticalVisibility:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                )
        )
    [probTrends:PHPMetarTafParser\Model\TAF:private] => Array
        (
            [0] => PHPMetarTafParser\Model\Trend\ProbTafTrend Object
                (
                    [probability:PHPMetarTafParser\Model\Trend\ProbTafTrend:private] => 30
                    [validity:PHPMetarTafParser\Model\Trend\TafTrend:private] => PHPMetarTafParser\Model\Validity Object
                        (
                            [startDay:PHPMetarTafParser\Model\Validity:private] => 29
                            [startHour:PHPMetarTafParser\Model\Validity:private] => 21
                            [startMinute:PHPMetarTafParser\Model\Validity:private] =>
                            [endDay:PHPMetarTafParser\Model\Validity:private] => 29
                            [endHour:PHPMetarTafParser\Model\Validity:private] => 23
                        )
                    [type:PHPMetarTafParser\Model\Trend\AbstractTrend:private] => TEMPO
                    [wind:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                    [visibility:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                    [clouds:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => Array
                        (
                        )
                    [weatherConditions:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => Array
                        (
                            [0] => PHPMetarTafParser\Model\WeatherCondition Object
                                (
                                    [intensity:PHPMetarTafParser\Model\WeatherCondition:private] =>
                                    [descriptor:PHPMetarTafParser\Model\WeatherCondition:private] => SH
                                    [phenomenons:PHPMetarTafParser\Model\WeatherCondition:private] => Array
                                        (
                                            [0] => RA
                                        )
                                )
                        )
                    [windShear:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                    [cavok:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                    [remark:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                    [verticalVisibility:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                )
            [1] => PHPMetarTafParser\Model\Trend\ProbTafTrend Object
                (
                    [probability:PHPMetarTafParser\Model\Trend\ProbTafTrend:private] => 40
                    [validity:PHPMetarTafParser\Model\Trend\TafTrend:private] => PHPMetarTafParser\Model\Validity Object
                        (
                            [startDay:PHPMetarTafParser\Model\Validity:private] => 30
                            [startHour:PHPMetarTafParser\Model\Validity:private] => 3
                            [startMinute:PHPMetarTafParser\Model\Validity:private] =>
                            [endDay:PHPMetarTafParser\Model\Validity:private] => 30
                            [endHour:PHPMetarTafParser\Model\Validity:private] => 7
                        )
                    [type:PHPMetarTafParser\Model\Trend\AbstractTrend:private] => PROB
                    [wind:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                    [visibility:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => PHPMetarTafParser\Model\Visibility Object
                        (
                            [mainVisibility:PHPMetarTafParser\Model\Visibility:private] => Array
                                (
                                    [visibility] => 1500
                                    [unit] => m
                                )
                            [minVisibility:PHPMetarTafParser\Model\Visibility:private] =>
                        )
                    [clouds:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => Array
                        (
                            [0] => PHPMetarTafParser\Model\Cloud Object
                                (
                                    [height:PHPMetarTafParser\Model\Cloud:private] => 400
                                    [quantity:PHPMetarTafParser\Model\Cloud:private] => SCT
                                    [type:PHPMetarTafParser\Model\Cloud:private] =>
                                )
                        )
                    [weatherConditions:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => Array
                        (
                            [0] => PHPMetarTafParser\Model\WeatherCondition Object
                                (
                                    [intensity:PHPMetarTafParser\Model\WeatherCondition:private] =>
                                    [descriptor:PHPMetarTafParser\Model\WeatherCondition:private] => BC
                                    [phenomenons:PHPMetarTafParser\Model\WeatherCondition:private] => Array
                                        (
                                            [0] => FG
                                        )
                                )
                        )
                    [windShear:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                    [cavok:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                    [remark:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                    [verticalVisibility:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                )
            [2] => PHPMetarTafParser\Model\Trend\ProbTafTrend Object
                (
                    [probability:PHPMetarTafParser\Model\Trend\ProbTafTrend:private] => 30
                    [validity:PHPMetarTafParser\Model\Trend\TafTrend:private] => PHPMetarTafParser\Model\Validity Object
                        (
                            [startDay:PHPMetarTafParser\Model\Validity:private] => 30
                            [startHour:PHPMetarTafParser\Model\Validity:private] => 4
                            [startMinute:PHPMetarTafParser\Model\Validity:private] =>
                            [endDay:PHPMetarTafParser\Model\Validity:private] => 30
                            [endHour:PHPMetarTafParser\Model\Validity:private] => 7
                        )
                    [type:PHPMetarTafParser\Model\Trend\AbstractTrend:private] => PROB
                    [wind:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                    [visibility:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => PHPMetarTafParser\Model\Visibility Object
                        (
                            [mainVisibility:PHPMetarTafParser\Model\Visibility:private] => Array
                                (
                                    [visibility] => 0800
                                    [unit] => m
                                )
                            [minVisibility:PHPMetarTafParser\Model\Visibility:private] =>
                        )
                    [clouds:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => Array
                        (
                        )
                    [weatherConditions:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => Array
                        (
                            [0] => PHPMetarTafParser\Model\WeatherCondition Object
                                (
                                    [intensity:PHPMetarTafParser\Model\WeatherCondition:private] =>
                                    [descriptor:PHPMetarTafParser\Model\WeatherCondition:private] =>
                                    [phenomenons:PHPMetarTafParser\Model\WeatherCondition:private] => Array
                                        (
                                            [0] => FG
                                        )
                                )
                        )
                    [windShear:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                    [cavok:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                    [remark:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                    [verticalVisibility:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => 300
                )
            [3] => PHPMetarTafParser\Model\Trend\ProbTafTrend Object
                (
                    [probability:PHPMetarTafParser\Model\Trend\ProbTafTrend:private] => 40
                    [validity:PHPMetarTafParser\Model\Trend\TafTrend:private] => PHPMetarTafParser\Model\Validity Object
                        (
                            [startDay:PHPMetarTafParser\Model\Validity:private] => 30
                            [startHour:PHPMetarTafParser\Model\Validity:private] => 12
                            [startMinute:PHPMetarTafParser\Model\Validity:private] =>
                            [endDay:PHPMetarTafParser\Model\Validity:private] => 30
                            [endHour:PHPMetarTafParser\Model\Validity:private] => 17
                        )
                    [type:PHPMetarTafParser\Model\Trend\AbstractTrend:private] => TEMPO
                    [wind:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => PHPMetarTafParser\Model\Wind Object
                        (
                            [direction:PHPMetarTafParser\Model\Wind:private] => 300
                            [cardinalDirection:PHPMetarTafParser\Model\Wind:private] => NW
                            [speed:PHPMetarTafParser\Model\Wind:private] => 8
                            [unit:PHPMetarTafParser\Model\Wind:private] => KT
                            [gust:PHPMetarTafParser\Model\Wind:private] => 0
                            [variable_wind:PHPMetarTafParser\Model\Wind:private] =>
                        )
                    [visibility:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                    [clouds:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => Array
                        (
                        )
                    [weatherConditions:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => Array
                        (
                        )
                    [windShear:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                    [cavok:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                    [remark:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                    [verticalVisibility:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
                )
        )
    [amendment:PHPMetarTafParser\Model\TAF:private] =>
    [icao:PHPMetarTafParser\Model\AbstractWeatherCode:private] => LSZH
    [day:PHPMetarTafParser\Model\AbstractWeatherCode:private] => 29
    [time:PHPMetarTafParser\Model\AbstractWeatherCode:private] => PHPMetarTafParser\Model\Time Object
        (
            [hours:PHPMetarTafParser\Model\Time:private] => 20
            [minutes:PHPMetarTafParser\Model\Time:private] => 25
        )
    [message:PHPMetarTafParser\Model\AbstractWeatherCode:private] => TAF LSZH 292025Z 2921/3103 VRB03KT 9999 FEW020 BKN080 TX20/3014Z TN06/3003Z PROB30 TEMPO 2921/2923 SHRA BECMG 3001/3004 4000 MIFG NSC PROB40 3003/3007 1500 BCFG SCT004 PROB30 3004/3007 0800 FG VV003 BECMG 3006/3009 9999 FEW030 PROB40 TEMPO 3012/3017 30008KT
    [wind:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => PHPMetarTafParser\Model\Wind Object
        (
            [direction:PHPMetarTafParser\Model\Wind:private] =>
            [cardinalDirection:PHPMetarTafParser\Model\Wind:private] => VRB
            [speed:PHPMetarTafParser\Model\Wind:private] => 3
            [unit:PHPMetarTafParser\Model\Wind:private] => KT
            [gust:PHPMetarTafParser\Model\Wind:private] => 0
            [variable_wind:PHPMetarTafParser\Model\Wind:private] =>
        )
    [visibility:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => PHPMetarTafParser\Model\Visibility Object
        (
            [mainVisibility:PHPMetarTafParser\Model\Visibility:private] => Array
                (
                    [visibility] => 9999
                    [unit] => m
                )
            [minVisibility:PHPMetarTafParser\Model\Visibility:private] =>
        )
    [clouds:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => Array
        (
            [0] => PHPMetarTafParser\Model\Cloud Object
                (
                    [height:PHPMetarTafParser\Model\Cloud:private] => 2000
                    [quantity:PHPMetarTafParser\Model\Cloud:private] => FEW
                    [type:PHPMetarTafParser\Model\Cloud:private] =>
                )
            [1] => PHPMetarTafParser\Model\Cloud Object
                (
                    [height:PHPMetarTafParser\Model\Cloud:private] => 8000
                    [quantity:PHPMetarTafParser\Model\Cloud:private] => BKN
                    [type:PHPMetarTafParser\Model\Cloud:private] =>
                )
        )
    [weatherConditions:PHPMetarTafParser\Model\AbstractWeatherContainer:private] => Array
        (
        )
    [windShear:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
    [cavok:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
    [remark:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
    [verticalVisibility:PHPMetarTafParser\Model\AbstractWeatherContainer:private] =>
)

```

###  Health Score

23

—

LowBetter than 27% of packages

Maintenance10

Infrequent updates — may be unmaintained

Popularity12

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

2353d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/27099046c751dbf9a6ca2f84da7ca4eb8ae8ca3ab0759d92d34614be0ee0ce03?d=identicon)[mivek](/maintainers/mivek)

---

Top Contributors

[![mivek](https://avatars.githubusercontent.com/u/9912558?v=4)](https://github.com/mivek "mivek (15 commits)")

---

Tags

metarmetar-decodermetar-informationparsertaftaf-messagesparserTAFMETAR

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/mivek-php-metar-taf-parser/health.svg)

```
[![Health](https://phpackages.com/badges/mivek-php-metar-taf-parser/health.svg)](https://phpackages.com/packages/mivek-php-metar-taf-parser)
```

###  Alternatives

[nikic/php-parser

A PHP parser written in PHP

17.4k902.6M1.8k](/packages/nikic-php-parser)[doctrine/lexer

PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.

11.2k910.8M118](/packages/doctrine-lexer)[erusev/parsedown

Parser for Markdown.

15.0k151.8M732](/packages/erusev-parsedown)[league/commonmark

Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)

2.9k404.0M702](/packages/league-commonmark)[masterminds/html5

An HTML5 parser and serializer.

1.8k242.8M229](/packages/masterminds-html5)[sabberworm/php-css-parser

Parser for CSS Files written in PHP

1.8k191.2M65](/packages/sabberworm-php-css-parser)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
