News Feed
Jobs Feed
Sections




Recent Jobs

News Archive
feed this:

Sebastian Bergmann's Blog:
Testing Your Privates
February 09, 2010 @ 11:48:42

In a new post to his blog today Sebastian Bergmann looks at a way you can test your privates (no, not that) - private methods in your classes with PHPUnit. The key lies in the Reflection API.

One question I get over and over again when talking about Unit Testing is this: "How do I test the private attributes and methods of my objects?" [...] PHP 5.3.2 introduces the ReflectionMethod::setAccessible() method to allow the invocation of protected and private methods through the Reflection API.

This method lets you, at runtime, change the access level on the method away from private or protected and down to public so the contents can be executed normally. Though he warns one thing about doing it this way - just because you can, doesn't mean it's a good thing. You application is meant to be tested in a certain way and you should probably stick to that.

0 comments voice your opinion now!
test private method tutorial reflection



Michael Kimsal's Blog:
Me griping about PHP ) (closures this time)
December 22, 2008 @ 10:24:25

Michael Kimsal has posted a few thoughts on one of the features of the upcoming PHP 5.3 - closures.

I first got acquainted with closures in Groovy last year, and love them. They make sense. The syntax is pretty easy, and feels natural in the language. Not so in PHP. Once again, inconsistencies are not just legacy issues in PHP - they are created anew for us to deal with for years to come.

He suggests that a different keyword (maybe, say "closure") to delineate between a normal function definitions and closures, especially when dealing with the Reflection API.

0 comments voice your opinion now!
closure gripe reflection anonymous function


Christian Stocker's Blog:
FOTD REFLECTIONCLASS()->NEWINSTANCEARGS($ARGS) is "slow"
September 18, 2008 @ 13:17:36

Christan Stocker has posted a finding of the day that he ran across and wanted to share to help out other developers out there:

For okapi we needed to have a function which loads any class with any number of arguments. This is not so easy in PHP as it looks like [...] Since 5.1.3 you can use the reflection extension to do this much nicer.

The difference comes in at about half the time for both side of the examples - with the switch and via reflection.

0 comments voice your opinion now!
reflection switch instance class arguments


Matthew Turland's Blog:
Environmental Awareness Quickie
July 28, 2008 @ 07:57:00

Matthew Turland came across someone having an issue running his PHP-based IRC bot (Phergie) an an environment where the exec function wasn't allowed:

This causes a warning in the Quit plugin, which uses exec to automatically detection of the full path to the PHP CLI binary on non-Windows systems that it will later use that path to initiate a new PHP CLI process to "restart" the bot.

It check this setting for the future, it was recommended that he look at the SPL ReflectionFunction class (a part of the Standard PHP Library) that would let him check the disabled status of any PHP function (looking at the result of the isDisabled call).

0 comments voice your opinion now!
spl isdisabled reflection exec irc bot phergie exec


PHP-GTK Community Site:
Enabling code completion for PHP-GTK in your PHP IDE
June 11, 2008 @ 12:04:59

The PHP-GTK Community Site has posted some information (and some files) to help make your editor of choice a bit more "PHP-GTK aware" when it comes to code completion.

These IDEs are able to provide code completion not only for prebuilt extension code, but also for user-level PHP code. This gives us a way to provide it to PHP-GTK developers : all it takes is a "stub" file containing PHP declarations equivalent to the PHP-GTK2 classes, interfaces, and their methods and constants.

Making it by hand would be slow (and not efficient at all) so they opted to let the Reflection API do the heavy lifting for them and generate a Gtk_Dumper output file to hand to your editor and let it parse. The file is available for download.

0 comments voice your opinion now!
phpgtk completion stub reflection ide


Tobias Schlitt's Blog:
Reflecting private properties
February 15, 2008 @ 12:02:00

Tobias Schlitt has posted a handy tip about using the Reflection API in PHP5 - specifically its accessing of private properties in a class.

I recently stumbled over reflecting private properties in PHP again. As you might know, this was not possible until now and if you tried this [code] PHP thanked it to you with this [error that is cannot access a non-public member].

He notes that, while the behaviour is correct, it still makes things like metaprogramming impossible. So, what's a developer to do? Patch it of course! Tobias and Derick Rethans persuaded two other developers (Derick and Marcus Borger) to include a patch that allows the Reflection API to see these private variables.

To make it work, you have to use the setAccessible method on the Reflection object to set which of the properties you want to be able to get at.

1 comment voice your opinion now!
reflection api setaccessible private properties


Stubbles Blog:
Do not trust the reflection API
January 28, 2008 @ 13:07:00

On the Stubbles blog, Frank Kleine offers some advice to developers looking to use the Reflection API - "don't trust it".

If you try to get informations about parameters from methods of internal classes - forget that. Examining several internal classes my key findings are: either there is no information about parameters available and the reflection API says the method does not have any parameters, or the information about the parameter is wrong.

He includes code examples along side the output from the script to illustrate his point.

0 comments voice your opinion now!
reflection api class external internal pdo pdostatement


Mikko Koppanen's Blog:
Creating a reflection
November 20, 2007 @ 10:20:00

Mikko Koppanen has another example of using the Imagick functionality to create an advanced image - this time, it's about adding a reflection (similar to some of the effects Apple uses in their designs).

Here is a simple example of creating a reflection of an image. The reflection is created by flipping the image and overlaying a gradient on it. Then both, the original image and the reflection is overlayed on a canvas.

Both the code and an example image are included in the post.

0 comments voice your opinion now!
imagick example reflection tutorial overlay imagick example reflection tutorial overlay


Sara Golemon's Blog:
create_function() is not your friend
May 21, 2007 @ 09:31:00

In response to this previous post from Felix Geisendorfer, Sara Golemon shares a few thoughts on why she thinks it's just the other way around - create_function is not your friend.

In the short post she lists just a few of the issues surrounding the use of the function including that it:

  • is prone to critical abuse by user-supplied code
  • skips opcode cache optimizations
  • encourages not using comments (evil)
  • 100% blind to reflection or PHPDoc style documentation generation

0 comments voice your opinion now!
createfunction eval abuse opcodecache reflection phpdoc createfunction eval abuse opcodecache reflection phpdoc


Hasin Hayder's Blog:
An interesting bug in ReflectionParameter object in PHP 5.2.1
May 14, 2007 @ 10:11:00

In a new blog post today, Hasin Hayder points out an interesting bug he found in the Reflection functionality that's offered in one of the latest PHP5 series release, version 5.2.1 (also found in 5.2.2). It deals with an issue in the ReflectionParameter object.

[Despite the closing of this bug] there is still the following bug alive in ReflectionParameter object, I tested it against the PHP version 5.2.1 . So what is this bug? The reflection parameter cannot retrieve the default value of a parameter if the next parameter has no default value. PHP simply omits all the variables before that variable and return only values after that variable.

He illustrates with a test class that uses reflection to get the parameters for the constructor. Unfortunately, the object only comes back with the last attribute. This is solved later in the comments, however, when it's discovered that the parameters, some of which are optional, are not in the "correct order" - optional parameters should always follow the required.

0 comments voice your opinion now!
bug reflection parameter order constructor bug reflection parameter order constructor



Community Events









Don't see your event here?
Let us know!


extension conference facebook job release zend drupal feature windows developer symfony wordpress framework sqlserver zendframework opinion podcast microsoft performance codeigniter

All content copyright, 2010 PHPDeveloper.org :: info@phpdeveloper.org - Powered by the Solar PHP Framework