- nizsheanez/yii2-sphinx-tools (v1.1.6)
A lightweight JsonRpc Server and Client for PHP
- nizsheanez/yii2-json-rpc (v1.1.2)
A lightweight JsonRpc Server and Client for PHP
- nizsheanez/yii2-asset-converter (v1.2.0, v1.1.9, v1.1.8)
Less, Sass and Phamlp converter for Yii2. No system requires. Fork of https://github.com/athos99/assetparser with Composer support, Less autoupdate by Composer, customizing of output directory
- markstory/asset_compress (v0.11)
An asset compression plugin for CakePHP. Provides file concatenation and a flexible filter system for preprocessing and minification.
- anahkiasen/illuminage (1.1.0)
Wrapper for the Imagine library to hook into the Laravel framework
- chilldev/proxy-templating-bundle (0.0.3)
Dynamic templating proxy references bundle for Symfony2.
- components/handlebars.js (v1.1.2)
Handlebars.js and Mustache are both logicless templating languages that keep the view and the code separated like we all know they should be.
- akkroo/apiclient (v1.0.4)
Akkroo Public API client libraries
- jms/metadata (1.5.0)
Class/method/property metadata management in PHP
- atelierspierrot/dev-tools (v1.2.1)
Tools & facilities to manage app packages' development
- geoip/geoip (v1.14)
MaxMind GeoIP PHP API
- psecio/iniscan (2.3)
A scanner to evaluate php.ini security
- supertag/gearman-bundle (v0.2.1)
Gearman bundle for Symfony2 to manage and monitor PHP gearman jobs and queue
- urodoz/cachemanager (1.0)
Bundle for Symfony 2 to handle cache management
- snapshotpl/zf-snap-geoip (2.0.2)
MaxMind GeoIP Module for Zend Framework 2
- contao-community-alliance/composer (0.7.2, 0.7.1, 0.7.0)
composer integration into the contao cms
- mf2/shim (v0.2.2)
A parsing library for parsing pages from a few common non-mf2 sites into the mf2 structure
- mlalbuquerque/silex-skeleton (v3.9.0)
A Silex skeleton for little (not tiny) projects
- erusev/parsedown (0.4.3, 0.4.2)
Parser for Markdown.
- bitgandtter/ratchet-bundle (0.6.4, 0.6.3)
ratchet integration into sf2
- bitgandtter/google-bundle (0.3.7, 0.3.6, 0.3.5)
Integrate Google Services into Symfony 2 app.
- bitgandtter/facebook-bundle (0.2.7, 0.2.6, 0.2.5)
Integrate Facebook Services into Symfony 2 app.
- bitgandtter/twitter-bundle (0.2.4, 0.2.3, 0.2.2)
Integrate Twitter Services into Symfony 2 app.
- nette/nette (v2.0.13)
Nette Framework - innovative framework for fast and easy development of secured web applications in PHP. Write less, have cleaner code and your work will bring you joy.
- mauserrifle/simresults (v0.2.4)
Simrace result reader for PHP
- webvariants/babelcache (v2.0.2)
Generic caching library with namespace support
- anahkiasen/former (3.3.0)
A powerful form builder
- voceconnect/voce-post-meta-date (v1.1.0)
Extension of Voce Post Meta Plugin to create date meta fields
- voceconnect/voce-post-meta-psu (v1.0.0)
Post Meta API Extension for Post Selection UI fields
- bitgandtter/binnacle-bundle (0.1.1)
- mongator/behaviors (v1.4.2, v1.4.3)
Bahaviors for Mongator, the Simple, powerful and ultrafast Object Document Mapper (ODM) for PHP and MongoDB
- flow/flow (0.6.0)
Fast PHP templating engine
- da-mitchell/steam-api (1.0.0)
PHP wrapper for the steam web API
- slm/mail (v1.3.0)
Integration of various email service providers in the Zend Framework ZendMail
- fr3d/xmldsig (v0.3)
Tool for easy management of XML Signatures (http://www.w3.org/TR/xmldsig-core/)
- gordalina/mangopay-bundle (1.0.2)
Symfony2 bundle to integrate Mangopay
- fuelphp/event (0.2.1)
Framework independent Event library.
- bitgandtter/socialuser-bundle (0.2.6)
Symfony BIT SocialUserBundle
- kumatch/fs-temp (0.1.1)
A simple temporary file and directory manager for PHP.
- bitgandtter/user-bundle (0.2.2)
Symfony BIT UserBundle
- davewid/peyote (0.7.1)
A database query builder for PHP 5.3+
- dphp/composer-utils (0.1.0)
Some utility scripts for Composer by dPHP.
- femto/core (v0.2.0)
The core of the Femto framework
- netsensia/companies-house (v0.0.10, v0.0.9)
Wrapper classes for Companies House Gateway
- joomlatools/installer (0.1.0)
A Composer plugin to install Joomla extensions into your installation.
- fortawesome/font-awesome (v4.0.3)
The iconic font designed for Bootstrap
- beberlei/assert (v1.6)
Thin assertion library for input validation in business models.
- atoum/atoum (0.0.1, 0.0.0)
Simple modern and intuitive unit testing framework for PHP 5.3+
- pid/speakingurl (0.5.0)
Generate of so called 'static' or 'Clean URL' or 'Pretty URL' or 'nice-looking URL' or 'Speaking URL' or 'user-friendly URL' or 'SEO-friendly URL' or 'slug' from a string.
- openbuildings/purchases (0.3.22, 0.3.21)
Multi Store Purchases
- ginger/ginger (v1.0.0)
- openbuildings/shipping (0.3.16)
Add complex shipping to openbuildings/purchases package
- shabbyrobe/cachet (1.3.0)
Pluggable Caching for PHP 5.5
- frenkynet/flysystem (0.1.4)
Filesystem abstraction, but easy.
- braincrafted/bootstrap-bundle (v2.0.0-alpha2)
Twitter Bootstrap for Symfony2
- happydemon/s4k (0.9)
An examplary implementation of Sentry in Kohana
- xsolve-pl/xsolve-bootstrap-crud-bundle (1.0.0)
XSolve Twitter Bootstrap bundle with CRUD generator and an example layout
- enlitepro/enlite-admin (v1.1.3)
- mediawiki/semantic-mediawiki (1.9beta1)
MediaWiki extension that lets you store and query structured data within wiki pages
- cviebrock/eloquent-sluggable (1.0.4)
Easy creation of slugs for your Eloquent models in Laravel 4.
- PHP MySQL Quizz class
Package:Summary:Manage questions and user answers stored in MySQLGroups:Author:Description:This class can manage questions and user answers stored in MySQL...
Read more at http://www.phpclasses.org/package/8322-PHP-Manage-questions-and-user-answers-stored-in-MySQL.html
- Linear Fit
Package:Summary:Perform linear regression on a set of data valuesGroups:Author:Description:This class can perform linear regression on a set of data values...
Read more at http://www.phpclasses.org/package/8320-PHP-Perform-linear-regression-on-a-set-of-data-values.html
- PHP URL Compare
Package:Summary:Compare two URLs and show the differencesGroups:Author:Description:This class can compare two URLs and show the differences...
Read more at http://www.phpclasses.org/package/8315-PHP-Compare-two-URLs-and-show-the-differences.html
- Simple Image
Package:Summary:Resize images preserving the original proportionsGroups:Author:Description:This is a simple class can resize images preserving the original proportions...
Read more at http://www.phpclasses.org/package/8309-PHP-Resize-images-preserving-the-original-proportions.html
- Manager MySQL
Package:Summary:Execute MySQL queries using table field valuesGroups:Author:Description:This class can execute MySQL queries using table field values...
Read more at http://www.phpclasses.org/package/8323-PHP-Execute-MySQL-queries-using-table-field-values.html
- Remove nth Occurance from String
Package:Summary:Remove or keep repeated text in a stringGroups:Author:Description:This class can remove or keep repeated text in a string...
Read more at http://www.phpclasses.org/package/8314-PHP-Remove-or-keep-repeated-text-in-a-string.html
- PHP URL Hash Value HMAC
Package:Summary:Generate hashes for URLs to prevent tamperingGroups:Author:Description:This class can generate hashes for URLs to prevent tampering...
Read more at http://www.phpclasses.org/package/8310-PHP-Generate-hashes-for-URLs-to-prevent-tampering.html
- PHP Social Sharing
Package:Summary:Get the times a page is shared in social networksGroups:Author:Description:This class can get the times a page is shared in social networks...
Read more at http://www.phpclasses.org/package/8317-PHP-Get-the-times-a-page-is-shared-in-social-networks.html
- PHP CSSMin
Package:Summary:Compact CSS files eliminating redundant textGroups:Author:Description:This class can compact CSS files eliminating redundant text...
Read more at http://www.phpclasses.org/package/8321-PHP-Compact-CSS-files-eliminating-redundant-text.html
In a previous post Anthony Ferrara looked at design patterns and their use (and usefulness) in modern applications. in this new post he continues the series but focuses more on a strategy to move past them related to inheritance.In my last post, I talked about revisiting the concept of Design Patterns and questioned how useful it is to "learn" them. The conclusion that I came to was that you are better served by focusing on how objects communicate rather than traditional patterns. Well, that's not the only "traditional concept" that I think we should move beyond. So, let's talk about inheritance...
He starts with a bit of definition about what inheritance actually is (for a little context) related to classes, not traits or interfaces. He compares two ideas around this inheritance - the actual implementation of it in the code and the specification of it, the planning a "promise" the structure defines. He discusses the separation of these two ideas and that what matters is that the specification is implemented - how doesn't matter as much. He gets down to the most basic concept behind the idea of inheritance, the idea of a "contract", that defines the "agreement" the implementation puts into practice.
Finally, he gets down to what he calls "the key" behind inheritance and encapsulation of functionality into desecrate parts - behaviors. These allow you to know what kind of functionality comes from which class/object without having to guess. Methods have behaviors and objects are collections of these, combining to make a larger object-centric behavior.Object Oriented Programming is all about abstraction. Each layer is an abstraction of code below it. Using "types" makes this difficult, because often we don't have real-world analogs to represent each layer. After all, an abstraction is specifically not a type. It's the concept behind it. With behaviors, this comes naturally. Link: http://blog.ircmaxell.com/2013/11/beyond-inheritance.html
They include a bit of illustration code showing how the see cracker works - generating 10 "random" numbers between 0 and 9. An example of running the "php_mt_seed" command against these values is shown along with the time to crack (just under 20 seconds). There's also an example of cracking when you don't know all 10 numbers in the sequence too. This further reinforces the best practice of not using mt_rand when you need strong random numbers for the security related functionality of your application (something like openssl_random_pseudo_bytes is a much better option).Link: http://www.openwall.com/lists/announce/2013/11/04/1
On the Aura framework blog there's a new post with a sneak peek at Aura.Dispatcher to handle the mapping between names and objects to handle the given request. The Aura framework provides high-quality, well-tested, standards-compliant, decoupled libraries that can be used in any codebase. This means you can use as much or as little of the project as you like.In the lessons learned post, I talked about how Aura was born of the idea that we could extract independent decoupled packages from Solar, and how in doing so, we discovered that some of those extracted packages themsleves could be further split into independent pieces. Previously, I wrote about Aura.Sql-v2, Aura.Sql_Query, and Aura.Sql_Schema as extractions from a single Aura.Sql package. Today, I'm going to talk about Aura.Dispatcher as a combined extraction from three separate packages.
He starts off with a look at dispatchers in general, noting that they're usually used with request routing but the concept isn't limited to just that. He points out that CLI dispatching, as it turns out, is a lot like web request handling. The component makes routing both sides equally simple and could also be used as something like a micro-framework router. The post finishes up with this concept, talking about the evolution from micro- to full-stack framework structures and how the component could help.Link: http://auraphp.com/blog/2013/11/04/aura-v2-dispatcher/
Every once and a while someone uses PHP for something interesting and different than the usual web application. In this post to his site Thomas Weinert shares an example - he uses PHP to control a LED via Carica Chip.Some time ago, in this blog post, I explained the basic stuff about Arduino, Firmata and PHP. Now it is time for the next step. Carica Io and Carica Firmata have grown and got a third layer called Carica Chip. [...] Carica Chip provides an easy way to control a device. So let's start with an "Interactive LED" example.
He uses the Carica Chip library and the "skeleton" application command from Composer to make a basic application. A simple HTML page with on and off links is made and and basic Carica Chip server is set up and executed. It's a simple example, but it gives you an idea of how to set it all up. The Carica Chip package also allows for other interactions including working with servos and motors.Link: http://www.a-basketful-of-papayas.net/2013/11/carica-chip-101-controlling-led-with-php.html
They're looking for three different kinds of talks - regular (30 minute) sessions, 45 minute extended sessions and 90 minute workshops. The 2014 edition of the phpDay conference will be held May 16th and 17th in Verona, Italy.Link: https://docs.google.com/a/phpdeveloper.org/spreadsheet/viewform?usp=drive_web&formkey=dG5GOUs1WW1zNWtHZXpIRTB2QjhEWmc6MA#gid=0
- zmq 1.1.0
- Device related fixes and improvements:
* Added setTimerCallback to set a timer function
* Added getIdleTimeout/getTimerTimeout
- zmq 1.1.1
- Missing zmq_clock.c from the archive
- riak 0.8.0
- Riak 1.4+ feature: CRDT counters implemented
- xmldiff 0.9.1
- Fixed libxml behavior change after diff/merge
- Fixed DOM compatibility for PHP 5.3.6 and below (Remi Collet)
- Judy 1.0.2
- Bug fix with count/size, see https://github.com/orieg/php-judy/issues/15
- Add missing test files in package.xml
- riak 0.7.0
- Riak 1.4+ feature: secondary index paging implemented
The SitePoint PHP blog has posted an introductory tutorial showing you how to use Gearman in PHP to handle multitasking outside of the normal script execution. Gearman is an external job server that lets you schedule scripts and tasks for execution.How many times have you developed a web application that had some functionality which would benefit from running an external program or even forking a separate process? This is not something you generally like to do from your web app because you want to make it run as fast and efficient as possible, while keeping the site functional for end users. So how do we get a fast but full-featured application that can process more than the average app we're used to?
They start by introducing you to Gearman - the server side - and how it works to handle a large amount of jobs quickly (50 thousand per second according to the article). They give the example of resizing images uploaded by users to illustrate. Next up is the installation - first Gearman then on to the PHP side, installing the PECL extension and adding it to the php.ini configuration. An example script is also provided showing how to create a new connection to Gearman and configure the callbacks for handling status changes. They also include adding two kinds of tasks - a normal one and a low priority one.Link: http://www.sitepoint.com/introduction-gearman-multi-tasking-php/
On DZone.com Giorgio Sironi has posted a refactoring recommendation around the handling of the data and types in your PHP code. He suggests the move from just a simple variable to a Value Object (noting that it's not really needed in PHP, but can provide a "richer interface" to work with the data).Statically typed languages sometimes encounter the problem of downcasting: the compiler is only able to guarantee a basic type, and the object contained instead is an instance of a richer subtype. [...] You'll never need to downcast objects: variables can contain handlers to objects or even scalars without compile-time checks. Casting with (ClassName) is not even supported by the language (while casting a non-object with (object) will give you a stdClass.)
He starts by talking about scalar values in PHP and a simple form of downcasting - using the casting notation included in the language. From there he moves into the conversion into Value Objects and some of the updates (like docblocks) that would come with their use. He outlines some steps towards the conversion and provides an example set of scripts showing the conversion process.Link: http://css.dzone.com/articles/practical-php-refactoring-38
On his Oracle blog Chris Jones has shared more details about using DTrace for dynamic tracing of the execution of your application. In this new post he looks more specifically at using it to trace through a PHPUnit test for a functional programming example.I was reading the article Functional Programming in PHP by Patkos Csaba and wondering how efficient this type of programming is. I thought this would be a good time to fire up DTrace and see what is going on. Since DTrace is "always available" even in production machines (once PHP is compiled with --enable-dtrace), this was easy to do.
Using the code provided from the other post he sets things up to run some sample tests via PHPUnit. He makes a simple DTrace D script to configure a tracer to watch for "function entry" and "function exit" during execution, outputting the function tree each time when the given function is found (via a parameter). He includes both the command to run the test with the trace and an example of the output result.Link: https://blogs.oracle.com/opal/entry/dtracing_a_phpunit_test_looking
His talk will cover how the DevOps role has come into its own over the past few years and what kinds of changes to expect, as a developer, in the upcoming years. If you'd like to hear this and lots of other great talks, there's still time to pick up your tickets for either just the conference or for both the conference and tutorials. You can even opt to take the Zend certification while you're at the event.Link: http://daveyshafik.com/archives/68854-keynoting-at-zendcon-europe.html
For those that have made the switch to OSX Mavericks and are wondering how to get PHP and MySQL into a working state, Rob Allen has posted a quick guide to getting it all set up.With OS X 10.9 Mavericks, Apple chose to ship PHP 5.4.17. This is how to set it up from a clean install of Mavericks. Note: If you don't want to use the built-in PHP or want to use version 5.5, then these are [other] alternatives: a binary package from Liip, Zend Server and a Homebrew install.
He provides all the commands you'll need to get things up and running including checking file/directory permissions, installing MySQL and using the command line to work with Apache (no more "Web Sharing"). He also includes the configuration changes to be made to the php.ini including how to enable Xdebug. There's lots of other good things included in the guide as well like setting up Composer, PHPUnit and how to compile a few handy extensions.Link: http://akrabat.com/computing/setting-up-php-mysql-on-os-x-mavericks/
In a new post to the Apigility forums today Matthew Weier O'Phinney has announced the release of an authentication/authorization component for the recently announced project from Zend. Apigility is a Zend Framework-based tool for easily constructing and managing an API.We've been working hard on Apigility since ZendCon, and have released some more code into the wild. zf-mvc-auth exists to provide both authentication and authorization for your APIs; in fact, it's a bit of a general-purpose library for ZF2 MVC apps! Right now, we support HTTP basic and digest authentication out of the box, and will be working next on OAuth support. Authorization is done by default via ZendPermissionsAcl, as we discovered a problem with using RBAC: RBAC is deny-by-default, which does not work when you want an open-by-default schema. You may opt-in to deny-by-default, as well as mark individual services as requiring permission by default. Finally, you have the option of denying/allowing per HTTP method of a service as well.
You can find out more details about this functionality in this quick screencast. The zf-apgility module depends on this new zf-mvc-auth module, so it will be included and available by default in your APIs. In that same post Matthew also talks about the listing of the Apigility packages on Packagist service and a note for those wanting to use the built-in HTTP server to run the tool (a PHP version dependency).Link: https://groups.google.com/a/zend.com/forum/#!topic/apigility-users/_mOPkxxmGYI
On Reddit.com today timoh has posted a "brief look back" at PHP's evolution to be "enterprise ready" and looks towards the future with some speculations as to what the coming years will bring to the language and its community.I'm trying to evoke some disqussion about how we have come to the current point of life we have now going on in the PHP field, as an architectural decisions, design and best practices we use to build PHP based software today. [...] Of course PHP language itself has put some walls to design the software the way one would have liked, but still there are alot that could have been done better even "back in the days". At least "better" in a sense what it means today.
He points out that in recent years there's been a push in the community as a whole for things like SOLID/DRY principles, decoupled code and testing. He speculates about the future of things like the Symfony and Zend Frameworks (and the radical changes they both made from their version one to version two). Have your own thoughts about the evolution of PHP and where it might be headed? Share them here!Link: http://www.reddit.com/r/PHP/comments/1pofu1/evolving_code/
Stefan Koopmanschap recently posted a great new article about how you can get the most out of conferences and what they have to offer besides just the sessions.At the most excellent PHPNW conference, Kat convinced me to deliver the first unconference talk of the day. It took me a while to get the right topic. I ended up with a topic I felt everyone at the conference could use for the rest of the two days that they were there: How to get the most out of a conference. For those that were not there, I want to try and put my unconference talk into a blogpost, so that everyone can use this information for their next conference.
He's broken it down into a few different major topics including the obvious "learn from the best" as well as:
- Learn and meet the best
- Find your new colleagues (or new friends)
- The backchannels
- Hack away! (at hackathons)
He also makes a great recommendation about providing feedback - not only is it important to the conference to let them know they've done a good job, but also to the speakers to help improve their skills.Link: http://leftontheweb.com/blog/2013/10/25/How_to_get_the_most_out_of_a_conference/
If you were wanting to make it to this year's True North PHP conference (next week!) but can't be there in person, they're providing another option - two new kinds of tickets: a video-on-demand option and a live streaming one.
The live stream version gives you access to a live stream of all three tracks as they happen as well as access to the videos after the fact. If you're not able to watch real-time, the video-on-demand option will provide the same access to the videos post-conference to watch at your convenience.
You can pick up these and the regular in-person kinds of tickets from their ticket sales page but hurry - the conference is just a few days away!Link: http://truenorthphp.ca/tickets.php
The "PHP Manual Masterpieces" site has varied a bit from its usual format and has gone with its own "blast from the past" doing a review in retrospect of PHP 2.0, a long forgotten version of the language with some "interesting" features.This is not about PHP as we now know it in the waning months of 2013. This is about the waning months of the year 1997. I was nine years old. My life was not yet overshadowed by haphazard scripting languages. Somewhere in the wilderness, during a savage thunderstorm in the dead of night, a Danish Canadian pushed the 2.0 revision of his personal home page generator's tarball to a web server.
The post looks at some of the "horrors" that made up PHP at that time including:
- The footer PHP/FI added to every page
- No real concept of input/output filtering
- The use of register_globals
- Weird handling of superglobal values
- The inclusion of magic_quotes
And, of course, all of these (and more) complete with quotes from the manual at the time talking about reasons behind their use and code where appropriate.Link: http://phpmanualmasterpieces.tumblr.com/post/65544023819/php-2-0-a-review-in-retrospect
Lee Davis has a new post to his site with some thoughts about RESTful APIS and the correct response to DELETE calls when a resource has already been removed. One camp says a 404 should be thrown as it's no longer there, the other says 204 a "No Content" should always be returned. Lee looks at both sides of the argument and shares some of his own thoughts too.Recently I had a read of an interesting post by Lukas Smith (@lsmith) about the use of the DELETE method when building RESTful services. I wanted to get my thoughts down on this. Mostly to help myself, but if it helps you determine a better approach, then great. I'm nowhere near qualified enough to preach, so this is by no means a "you should do it this way / my way is correct post", just food for thought. Besides, there are probably more questions here than answers.
He talks about the idea of "idempotence" when it comes to REST APIs and how it relates back to the DELETE discussion. He points out that the term has more to do with the end result of the request and not so much about how it's handled (and any "side effects" that may come with it). Various checks on the resource in question - like "does it exist" - could be considered a side effect of its operation. In his opinion, though, the 200 series of responses are more appropriate when a resource is actually deleted.Link: http://www.duckheads.co.uk/is-a-http-delete-requests-idempotent/491