PHPackages                             tebe/php-cfn - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. tebe/php-cfn

AbandonedArchivedLibrary[Utility &amp; Helpers](/categories/utility)

tebe/php-cfn
============

Userland implementation of PHP RFC: Consistent Function Names

v1.0.0(6y ago)26MITPHPPHP &gt;=7.1.0

Since Dec 30Pushed 6y ago1 watchersCompare

[ Source](https://github.com/tbreuss/php-cfn)[ Packagist](https://packagist.org/packages/tebe/php-cfn)[ Docs](https://wiki.php.net/rfc/consistent_function_names)[ RSS](/packages/tebe-php-cfn/feed)WikiDiscussions master Synced 1w ago

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

[![Packagist](https://camo.githubusercontent.com/ddaf79106f0396285cf4b62251435443226a20655720e7c53aebecfa8299dd82/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f746562652f7068702d63666e2e737667)](https://packagist.org/packages/tebe/php-cfn)[![GitHub (pre-)release](https://camo.githubusercontent.com/76a9bbc3b2a77f85823ae3806ca29dddee62c5c606585a2c8991637a806b04c3/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f746272657573732f7068702d63666e2f616c6c2e737667)](https://github.com/tbreuss/php-cfn/releases)[![License](https://camo.githubusercontent.com/eb346e733bd755027c8f85032aa6bb08c4fa7ade1fedfd86522f168c1c5f9602/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f746272657573732f7068702d63666e2e737667)](https://github.com/tbreuss/php-cfn/blob/master/LICENSE)[![PHP from Packagist](https://camo.githubusercontent.com/a11c9ef5ad15428707948c492eb885bbeb2331c3e574e3cd0c9a025f57bc61d2/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f746562652f7068702d63666e2e737667)](https://packagist.org/packages/tebe/php-cfn)

PHP RFC: Consistent Function Names
==================================

[](#php-rfc-consistent-function-names)

Userland implementation of [PHP RFC: Consistent Function Names](https://wiki.php.net/rfc/consistent_function_names). It creates aliases with more consistent names.

There are many functions that named before naming standard in [CODING\_STANDARDS](https://github.com/php/php-src/blob/master/CODING_STANDARDS.md). Therefore, PHP has function names like `phpversion()` and `htmlspecialchars()`.

We have many function names that comply [IEEE 1003.1](http://pubs.opengroup.org/onlinepubs/9699919799/idx/is.html)standard names. IEEE 1003.1 is also well established names, but it has different naming. IEEE 1003.1 names can be use as aliases.

Without cleanups, PHP may have inconsistent API names even if PHP has new APIs for the same purpose because we care compatibility a lot. Unless we have standard confirming function names at some point, we may keep inconsistent function names forever and never have consistent function names.

Please read the RCF for more information: [https://wiki.php.net/rfc/consistent\_function\_names](https://wiki.php.net/rfc/consistent_function_names)

Installation
------------

[](#installation)

```
composer require tebe/php-cfn

```

Functions
---------

[](#functions)

### Functions other than Standard module

[](#functions-other-than-standard-module)

NewOldCommentbc\_addbcaddbc\_compbccompbc\_divbcdivbc\_modbcmodbc\_mulbcmulbc\_powbcpowbc\_pow\_modbcpowmodbc\_scalebcscalebc\_sqrtbcsqrtbc\_subbcsub

NewOldCommentgettext\_bind\_text\_domain\_codesetbind\_textdomain\_codesetgettext\_bind\_text\_domainbindtextdomain**gettext\_dc**dcgettext**gettext\_dcn**dcngettext**gettext\_d**dgettext**gettext\_dn**dngettext**gettext\_n**ngettextgettext\_text\_domaintextdomain

NewOldCommentbz\_closebzclosebz\_compressbzcompressbz\_decompressbzdecompressbz\_errnobzerrnobz\_errorbzerrorbz\_errstrbzerrstrbz\_flushbzflushbz\_openbzopenbz\_readbzreadbz\_writebzwrite

NewOldCommentgz\_closegzclosegz\_compressgzcompressgz\_decodegzdecodegz\_deflategzdeflategz\_encodegzencodegz\_eofgzeofgz\_filegzfilegz\_getcgzgetcgz\_getsgzgetsgz\_getssgzgetssgz\_inflategzinflategz\_opengzopengz\_passthrugzpassthrugz\_putsgzputsgz\_readgzreadgz\_rewindgzrewindgz\_seekgzseekgz\_tellgztellgz\_uncompressgzuncompressgz\_writegzwrite**gz\_read\_file**readgzfile

NewOldComment**gd\_image\_size**getimagesize**gd\_image\_size\_from\_string**getimagesizefromstringgd\_type\_to\_extensionimage\_type\_to\_extensiongd\_type\_to\_mime\_typeimage\_type\_to\_mime\_typegd\_2wbmpimage2wbmpgd\_affineimageaffinegd\_affine\_matrix\_concatimageaffinematrixconcatgd\_affine\_matrix\_getimageaffinematrixgetgd\_alpha\_blendingimagealphablendinggd\_antialiasimageantialiasgd\_arcimagearcgd\_charimagechargd\_charupimagecharupgd\_color\_allocateimagecolorallocategd\_color\_allocate\_alphaimagecolorallocatealphagd\_color\_atimagecoloratgd\_color\_closestimagecolorclosestgd\_color\_closest\_alphaimagecolorclosestalphagd\_color\_closest\_hwbimagecolorclosesthwbgd\_color\_deallocateimagecolordeallocategd\_color\_exactimagecolorexactgd\_color\_exact\_alphaimagecolorexactalphagd\_color\_matchimagecolormatchgd\_color\_resolveimagecolorresolvegd\_color\_resolve\_alphaimagecolorresolvealphagd\_color\_setimagecolorsetgd\_colors\_for\_indeximagecolorsforindexgd\_colors\_totalimagecolorstotalgd\_color\_transparentimagecolortransparentgd\_convolutionimageconvolutiongd\_copyimagecopygd\_copy\_mergeimagecopymergegd\_copy\_merge\_grayimagecopymergegraygd\_copy\_resampledimagecopyresampledgd\_copy\_resizedimagecopyresizedgd\_createimagecreategd\_create\_from\_gd2imagecreatefromgd2gd\_create\_from\_gd2\_partimagecreatefromgd2partgd\_create\_from\_gdimagecreatefromgdgd\_create\_from\_gifimagecreatefromgifgd\_create\_from\_jpegimagecreatefromjpeggd\_create\_from\_pngimagecreatefrompnggd\_create\_from\_stringimagecreatefromstringgd\_create\_from\_wbmpimagecreatefromwbmpgd\_create\_from\_webpimagecreatefromwebpgd\_create\_from\_xbmimagecreatefromxbmgd\_create\_from\_xpmimagecreatefromxpmgd\_create\_true\_colorimagecreatetruecolorgd\_cropimagecropgd\_crop\_autoimagecropautogd\_dashed\_lineimagedashedlinegd\_destroyimagedestroygd\_ellipseimageellipsegd\_fillimagefillgd\_filled\_arcimagefilledarcgd\_filled\_ellipseimagefilledellipsegd\_filled\_polygonimagefilledpolygongd\_filled\_rectangleimagefilledrectanglegd\_fill\_to\_borderimagefilltobordergd\_filterimagefiltergd\_flipimageflipgd\_font\_heightimagefontheightgd\_font\_widthimagefontwidthgd\_ft\_bboximageftbboxgd\_ft\_textimagefttextgd\_gamma\_correctimagegammacorrectgd\_raw2imagegd2gd\_rawimagegdgd\_gifimagegifgd\_grab\_screenimagegrabscreengd\_grab\_windowimagegrabwindowgd\_interlaceimageinterlacegd\_is\_true\_colorimageistruecolorgd\_jpegimagejpeggd\_layer\_effectimagelayereffectgd\_lineimagelinegd\_load\_fontimageloadfontgd\_palette\_copyimagepalettecopygd\_palette\_to\_true\_colorimagepalettetotruecolorgd\_pngimagepnggd\_polygonimagepolygongd\_ps\_bboximagepsbboxgd\_ps\_encode\_fontimagepsencodefontgd\_ps\_extend\_fontimagepsextendfontgd\_ps\_free\_fontimagepsfreefontgd\_ps\_load\_fontimagepsloadfontgd\_ps\_slant\_fontimagepsslantfontgd\_ps\_textimagepstextgd\_rectangleimagerectanglegd\_rotateimagerotategd\_save\_alphaimagesavealphagd\_scaleimagescalegd\_set\_brushimagesetbrushgd\_set\_interpolationimagesetinterpolationgd\_set\_pixelimagesetpixelgd\_set\_styleimagesetstylegd\_set\_thicknessimagesetthicknessgd\_set\_tileimagesettilegd\_stringimagestringgd\_string\_upimagestringup**gd\_width**imagesx**gd\_height**imagesygd\_true\_color\_to\_paletteimagetruecolortopalettegd\_ttf\_bboximagettfbboxgd\_ttf\_textimagettftextgd\_typesimagetypesgd\_wbmpimagewbmpgd\_webpimagewebpgd\_xbmimagexbmgd\_iptc\_embediptcembedgd\_iptc\_parseiptcparsegd\_jpeg2wbmpjpeg2wbmpgd\_png2wbmppng2wbmp

NewOldCommentexif\_image\_typeexif\_imagetypeexif\_tag\_nameexif\_tagname

ctype modules functions are IEEE functions. Add "ctype\_" prefixed IEEE aliases.

NewOldCommentctype\_alnum **ctype\_isalnum** IEEEctype\_alpha **ctype\_isalpha** IEEEctype\_cntrl **ctype\_iscntrl** IEEEctype\_digit **ctype\_isdigit** IEEEctype\_graph **ctype\_isgraph** IEEEctype\_lower **ctype\_islower** IEEEctype\_print **ctype\_isprint** IEEEctype\_punct **ctype\_ispunct** IEEEctype\_space **ctype\_isspace** IEEEctype\_upper **ctype\_isupper** IEEEctype\_xdigit **ctype\_isxdigit** IEEE

NewOldCommentmb\_decode\_mime\_headermb\_decode\_mimeheadermb\_decode\_numeric\_entitymb\_decode\_numericentitymb\_encode\_mime\_headermb\_encode\_mimeheadermb\_encode\_numeric\_entitymb\_encode\_numericentity**mb\_mail**mb\_send\_mailThere is mail() as standard function### Socket Functions

[](#socket-functions)

IEEE names are prefixed by "socket\_"

NewOldCommentsocket\_get\_peer\_namesocket\_getpeernameIEEEsocket\_get\_sock\_namesocket\_getsocknameIEEEsocket\_recv\_fromsocket\_recvfromIEEEsocket\_recv\_msgsocket\_recvmsgIEEEsocket\_send\_msgsocket\_sendmsgIEEEsocket\_send\_tosocket\_sendtoIEEE**socket\_errstr** socket\_strerror**need more consideration. strerror() is IEEE name** Adjust to accord with other names. errstr/errno abbreviations are used by various functions/classes. e.g. bz\_errstr(), MySQLi::$errno.

NewOldComment**sapi\_request\_headers**getallheadersCategorized as apache function, but available for CLI and FCGI also**apache\_virtual**virtualapache\_get\_envapache\_getenvapache\_set\_envapache\_setenv### Date/Time Functions

[](#datetime-functions)

NewOldComment**date\_get**getdate(Return array date)(IEEE)**date\_check**checkdate**time\_part**idate(Retrieve part of date information as int according to format)**time\_make**mktime(Return timestamp from number of int parameters)(IEEE)**time\_format**strftime(Return local time string according to format/locale)(IEEE)**time\_utc**gmdate(Return array GMT/UTC timestamp)**time\_utc\_make**gmmktime(Return GMT/UTC timestamp from array)**time\_utc\_format**gmstrftime(Return GMT/UTC time string according to format/locale)**time\_get**gettimeofday(Return array time of day)(IEEE)**time\_local**localtime(Return localtime() result array. More info than time\_get/gettimeofday)(IEEE)**time\_micro**microtime(Return microtime resolution time)(IEEE)**time\_parse**strptime(Parse time string generated by time\_format/strftime. Return timestamp) (IEEE)**time\_from\_string** strtotime(Parse string time and return timestamp. Return timestamp)### Directory Related Functions

[](#directory-related-functions)

Directory related : Prefixed by "dir\_" It's supposed to be named as "dir module". Note: These functions changes "directory entry" information.

NewOldCommentdir\_renamerenameRename is actually a directory operation. e.g File deletion/rename is controlled by current dir permission (IEEE)**dir\_delete**rmdirIEEE**dir\_create**mkdirIEEEdir\_chownchownIEEEdir\_chmodchmodIEEEdir\_chgrpchgrpIEEEdir\_namedirnameIEEEdir\_globglobIEEE

NewOldComment**dir\_set**chdirIEEEdir\_chrootchrootIEEE**dir\_get**getcwdIEEE**dir\_open**opendirIEEE**dir\_close**closedirIEEE**dir\_read**readdirIEEE**dir\_rewind**rewinddirIEEE**dir\_scan**scandirIEEE### Function Handling Functions

[](#function-handling-functions)

All of function handling functions are prefixed by "function\_" by these.

NewOldComment**function\_declared**get\_defined\_functionsThere are get\_defined\_constants()/get\_defined\_vars(), but class/interface/trait use get\_declared\_classes/interfaces/traits()**function\_create**create\_functionThere is function\_exists()**function\_arg**func\_get\_arg**function\_args**func\_get\_argsfunction\_num\_argsfunc\_num\_args**function\_call\_user**call\_user\_func**function\_call\_user\_array**call\_user\_func\_array**function\_shutdown\_register**register\_shutdown\_function**function\_tick\_register**register\_tick\_function**function\_tick\_unregister**unregister\_tick\_function**function\_static\_call\_array**forward\_static\_call\_array**function\_static\_call**forward\_static\_call### Command Execution Functions

[](#command-execution-functions)

NewOldComment**exec\_passthru**passthruNamed after exec()**exec\_shell**shell\_exec**exec\_system**systemIEEE**exec\_escape\_arg**escapeshellarg**exec\_escape\_cmd**escapeshellcmd### String Related Functions

[](#string-related-functions)

HTML related:

NewOldCommenthtml\_entitieshtmlentities**html\_escape**htmlspecialcharsRename it with real meaning**html\_escape\_decode**htmlspecialchars\_decode**html\_nl2br**nl2br**html\_strip\_tags**strip\_tags**html\_translation\_table**get\_html\_translation\_tableLocate related:

NewOldCommentlocale\_convlocaleconvIEEE**locale\_set**setlocaleIEEE**locale\_info**nl\_langinfoIEEE"string" function but no "str\_" prefix

NewOldComment**str\_cslashes**addcslashes**str\_cslashes\_strip**stripcslashes**str\_slashes**addslashes**str\_slashes\_strip**stripslashesstr\_chopchopstr\_count\_charscount\_charsstr\_chunk\_splitchunk\_splitstr\_explodeexplodestr\_implodeimplodestr\_money\_formatmoney\_formatstr\_number\_formatnumber\_formatstr\_levenshteinlevenshteinstr\_metaphonemetaphone**str\_parse**parse\_strstr\_quote\_metaquotemetastr\_similar\_textsimilar\_textstr\_soundexsoundexstr\_sscanfsscanfIEEEstr\_rtrimrtrimstr\_trimtrimstr\_ltrimltrimstr\_lc\_firstlcfirststr\_uc\_firstucfirststr\_uc\_wordsucwordsstr\_word\_wrapwordwrapComparison:

NewOldCommentstr\_cmpstrcmpIEEEstr\_ncmpstrncmpIEEEstr\_case\_cmpstrcasecmpIEEEstr\_ncase\_cmpstrncasecmpIEEEstr\_nat\_cmpstrnatcmpIEEEstr\_nat\_case\_cmpstrnatcasecmpIEEEConversion:

NewOldCommentstr\_to\_lowerstrtolower, **tolower** IEEEstr\_to\_upperstrtoupper, **toupper** IEEEMisc:

NewOldCommentstr\_get\_csvstr\_getcsvNamed after libc:

NewOldCommentstr\_chrstrchrIEEEstr\_cmpstrcmpIEEEstr\_collstrcollIEEEstr\_cspnstrcspnIEEEstr\_iposstriposstr\_istrstristrstr\_lenstrlenIEEEstr\_pbrkstrpbrkIEEEstr\_posstrposstr\_rchrstrrchrstr\_revstrrevstr\_riposstrriposstr\_rposstrrposstr\_spnstrspnIEEEstr\_strstrstrIEEEstr\_tokstrtokIEEEstr\_trstrtr

IEEE names are prefixed by "mb\_"

NewOldCommentmb\_str\_cutmb\_strcut**mb\_str\_trim\_width**mb\_strimwidthmb\_str\_iposmb\_striposmb\_str\_istrmb\_stristrmb\_str\_lenmb\_strlenIEEEmb\_str\_posmb\_strposmb\_str\_rchrmb\_strrchrmb\_str\_richrmb\_strrichrmb\_str\_riposmb\_strriposmb\_str\_rposmb\_strrposmb\_str\_strmb\_strstrIEEEmb\_str\_to\_lowermb\_strtolower, **mb\_tolower** IEEEmb\_str\_to\_uppermb\_strtoupper, **mb\_toupper** IEEEmb\_str\_widthmb\_strwidth

IEEE names are prefixed by "iconv\_"

NewOldCommenticonv\_str\_leniconv\_strlenIEEEiconv\_str\_posiconv\_strposiconv\_str\_rposiconv\_strrpos

IEEE names are prefixed by "grapheme\_"

NewOldCommentgrapheme\_str\_iposgrapheme\_striposgrapheme\_str\_istrgrapheme\_stristrgrapheme\_str\_lengrapheme\_strlenIEEEgrapheme\_str\_posgrapheme\_strposgrapheme\_str\_riposgrapheme\_strriposgrapheme\_str\_rposgrapheme\_strrposgrapheme\_str\_strgrapheme\_strstrIEEE### Array Related Functions

[](#array-related-functions)

NewOldCommentarray\_sortsortSort values**array\_sort\_reverse**rsortReverse sort values**array\_usort**usortUser sort values**array\_sort\_assoc**asortKeep key and sort**array\_sort\_assoc\_reverse**arsortKeep key and reverse sort**array\_sort\_uassoc**uasortKeep key and user sort**array\_sort\_key**ksortSort keys**array\_sort\_key\_reverse**krsortReverse sort keys**array\_sort\_ukey**uksortUser key sort**array\_sort\_natural**natsortNatural sort**array\_sort\_natural\_case**natcasesortNatural sort without case**array\_in**in\_arrayarray\_rangerangeCreate array of rangearray\_shuffleshuffleRandomize values**array\_find**array\_search**array\_key\_find**array\_key\_exists### File Related Functions

[](#file-related-functions)

NewOldCommentlink\_infolinkinfo**link\_stat**lstatIEEE**link\_chown**lchownIEEE**link\_chgrp**lchgrpIEEE**link\_read**readlinkIEEE**link\_symbolic**symlinkIEEE**path\_base\_name**basenamepath\_infopathinfofile\_readreadfileThis could be file\_read() or file\_passthru(). If rename fopen()/etc with "file\_" prefix, file\_read() may conflict with fread() file\_passthru() may conflict with fpassthru().**pipe\_close**pcloseIEEE**pipe\_open**popenIEEEfile\_atimefileatimefile\_ctimefilectimefile\_groupfilegroupfile\_inodefileinodefile\_mtimefilemtimefile\_ownerfileownerfile\_permsfilepermsfile\_sizefilesizefile\_typefiletype**file\_name\_match**fnmatchIEEE**file\_temp\_name**tempnamIEEEfile\_copycopyIEEEfile\_statstatIEEE**file\_stat\_clear\_cache**clearstatcache**file\_move\_uploaded**move\_upload\_file**file\_delete**unlinkThere is dummy "delete()" function entry for unlink(). Unlink is a directory operation in fact, but made it as file\_delete(). There will be dir\_delete()**file\_rename**renamef\*() : Examples are fopen(), fread(). These functions are for file(stream) resource. "f" prefix functions are kept, there should be "ftemp(tmpfile)","frewind(rewind)" because these operates with file(stream) resource.

NewOldCommentfget\_csvfgetcsvIEEEfput\_csvfputcsv**frewind**rewindThis one is exception that does not have "f" prefix, but operates with file handle**ftemp**tmpfileThis one is exception that does not have "f" prefix, but returns file handle, IEEE### Other Standard Functions

[](#other-standard-functions)

NewOldCommenttime\_sleepsleepIEEEtime\_nano\_sleeptime\_nanosleep, **nanosleep** IEEE**time\_micro\_sleep**usleepIEEEtime\_unique\_iduniqiduniqid() is microtime() basedsys\_get\_load\_avgsys\_getloadavgphp\_strip\_white\_spacephp\_strip\_whitespace

NewOldCommenturl\_decodeurldecodeurl\_encodeurlencodeurl\_raw\_decoderawurldecodeurl\_raw\_encoderawurlencode**url\_parse**parse\_url**url\_build\_query**http\_build\_queryMake it URL function**url\_meta\_tags**get\_meta\_tagsGet meta tags from URL/file**url\_headers**get\_headersGet meta tags from URL/file

NewOldCommentphp\_creditsphpcreditsphp\_infophpinfophp\_versionphpversionget\_optgetoptget\_envgetenv**This could be "env\_get"**, IEEEput\_envputenv**This could be "env\_set"**, IEEEFollowing get\_() may be prefixed by "php\_" rather than "get\_".

NewOldCommentget\_last\_modgetlastmodReturn **main** script timestamp.get\_my\_gidgetmygid"my\_" prefix used because they return info about **current** script.get\_my\_inodegetmyinodeget\_my\_pidgetmypidget\_my\_uidgetmyuidget\_rusagegetrusage

NewOldCommentbool\_valboolvaldouble\_valdoublevalfloat\_valfloatvalint\_valintvalstr\_valstrval**type\_get**gettype**type\_set**settype**type\_resource**get\_resource\_typeGet resource type

NewOldCommentphp\_defined\_varsget\_defined\_vars

Most of Class/interface/trait related functions are prefixed by "class\_"/"interface\_"/"trait\_".

NewOldComment**class\_called**get\_called\_classGet late static binding class name. There are class\_exists()/class\_alias()class\_methodsget\_class\_methodsclass\_varsget\_class\_varsGet class property**class\_get**get\_classGet class name of an object**class\_parent**get\_parent\_classclass\_object\_varsget\_object\_varsGet instance property**class\_declared**get\_declared\_classes**interface\_declared**get\_declared\_interfacesThere is interface\_exists()**trait\_declared**get\_declared\_traitsThere is trait\_exists()

PHP related function are prefixed by "php\_".

NewOldCommentphp\_extension\_loadedextension\_loaded**php\_extension\_loaded\_all**get\_loaded\_extensionsLike ini\_get\_all()**php\_extension\_functions**get\_extension\_funcsphp\_dldlphp\_cfg\_varget\_cfg\_varGet value from configuration(INI) file including non-INI valuephp\_current\_userget\_current\_userOwner of current PHP script filephp\_defined\_constantsget\_defined\_constantsThere is [get\_defined\_vars()](https://php.net/manual/en/book.var.php "https://php.net/manual/en/book.var.php")**php\_include\_path\_get**get\_include\_pathLike ini\_get/set/restore(). ini\_set/get/restore() can do the same. Deprecate all them? or only have php\_include\_path() does both get/set?**php\_include\_path\_set**set\_include\_path**php\_include\_path\_restore**restore\_include\_pathphp\_included\_filesget\_included\_filesphp\_required\_filesget\_required\_files**php\_time\_limit**set\_time\_limit"\_set" may be omitted. It changes "max\_execution\_time" INI. ini\_set() can do the same. Deprecate?

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 81.3% 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

2331d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/e132a58c242510a02375872984be505a6b1adcf152214c0e96fb291d929c74ac?d=identicon)[thomasbreuss](/maintainers/thomasbreuss)

---

Top Contributors

[![tbreuss](https://avatars.githubusercontent.com/u/1334161?v=4)](https://github.com/tbreuss "tbreuss (13 commits)")[![jasny](https://avatars.githubusercontent.com/u/100821?v=4)](https://github.com/jasny "jasny (3 commits)")

---

Tags

consistentfunctionnamesphprfc

### Embed Badge

![Health badge](/badges/tebe-php-cfn/health.svg)

```
[![Health](https://phpackages.com/badges/tebe-php-cfn/health.svg)](https://phpackages.com/packages/tebe-php-cfn)
```

PHPackages © 2026

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