PHP Classes

The Maturity of PHP - Lately in PHP podcast episode 37

Recommend this page to a friend!
  Blog PHP Classes blog   RSS 1.0 feed RSS 2.0 feed   Blog The Maturity of PHP -...   Post a comment Post a comment   See comments See comments (0)   Trackbacks (0)  


Viewers: 2

Last month viewers: 1

Categories: Lately in PHP Podcast, PHP opinions

With the release of version 5.5, PHP has reached a new level of maturity that helps making it be taken even more seriously.

That was one of the main topics discussed by Manuel Lemos and CÚsar Rodas in episode 37 of the Lately in PHP podcast.

They also talked about the new design of the site, the PHP Internals book site, and the proposals for anonymous exception catches and checking function return types.

They also discussed the latest major enhancements of the PHP Classes site and the plans for future features.

Listen to the podcast, or watch the hangout video, or read the transcript so you can learn more about what was discussed regarding these and other PHP related topics.

Loaded Article


Listen or download the podcast, RSS feed and subscribe in iTunes

Watch the podcast video, subscribe to the podcast YouTube channel

Read the podcast transcript

Click on the Play button to listen now.

Download Size: 77MB Listeners: 2613

Introduction music Harbour used with explicit permission from the author Danilo Ercole, from Curitiba, Brazil

View Podcast in iTunes

RSS 2.0 feed compliant with iTunes:

In iTunes, use the Subscribe to Podcast... item of the Advanced menu, and then enter the URL above to subscribe to this podcast.

Watch the podcast video

Note that the timestamps below in the transcript may not match the same positions in the video because they were based on the audio timestamps and the audio was compacted to truncate silence periods.

See the Lately in PHP podcast play list on YouTube and Subscribe to this channel there.

Show notes

Introduction (0:20)

PHP 5.5 released (1:18)

The New Design of site (10:26)

The PHP Internals Book (19:29)

The Anonymous Exception Catch Proposal (24:36)

Function Return Type Checking Proposal (27:29)

PHP Developer Reputation System (35:36)

The Future Features of PHP Classes (54:10)

JavaScript Innovation Award Winners of April 2013 (1:16:13)

PHP Innovation Award Winners of April 2013 (1:23:44)

Conclusion (1:31:30)

Introduction (0:20)

Manuel Lemos: OK. Welcome to the Lately in PHP podcast. This is episode 37. After a lot of struggle with the Google+ hangouts, we are finally recording.

This time, I have here with me to talk about several interesting PHP topics in this episode 37, Cesar Rodas.

Hello, Cesar. How are you doing?

Cesar Rodas: Hello. I'm doing fine. And how are you doing?

Manuel Lemos: I'm doing fine but for some reason, the video disappears. I wonder if we are live.

Cesar Rodas: Oh, I am alive here.

Manuel Lemos: Can you see my video?

Cesar Rodas: I can see yours.

Manuel Lemos: OK, let's move on before Google drop us from the hangout.

PHP 5.5 released (1:18)

Manuel Lemos: Well, as always, we have several interesting topics, things that have been happening lately in the PHP world.

I think probably the most relevant thing that happened lately was the release of PHP 5.5. The announcement was just done a few weeks ago. I'm not sure of the exact date.

I'm showing here the screen. Let me try to increase the font. I don't know if this is working. Is there readable anyway for you?

Cesar Rodas: Yes, I can read it fine.

Manuel Lemos: Well, basically, there is nothing exactly surprising because we've been talking about PHP 5.5 for the last months, everything that was expected.

And, maybe, we could quickly review what were the most important features. There are many features listed here. I don't know, I don't think they're probably all that relevant. Well, at least for me. Now, other people may have different opinions.

Cesar, for you, what were the most important features?

Cesar Rodas: Well, the most important features are the generators which are some concepts which are not made but they became mainstream lately.

Manuel Lemos: Yeah.

Cesar Rodas: So, basically, you can just have several exit points from one function and then just call something and then, resume. It's something cool. I haven't thought how I could use it, how I can make it really useful.

Manuel Lemos: Have you tried it in practice? Because I find it so confusing, but I confess that I just looked at the examples and could not figure exactly how to go about it.

Cesar Rodas: It was possible for me to understand easily because it looks somewhat like Python. So, basically, you call it from a loop either from while or from foreach. And then, when you yield something, it's like what you are returning.

Manuel Lemos: So, the yield statement is like a return value. So, if I got this right, the generators are basically functions that generate values for an eventual iteration. It could be like supplying an array for the iterations that is built dynamically rather than statically, right?

Cesar Rodas: Exactly. Exactly. Because that is like a pause statement. Like you return it but when that loop ends, you will continue after that yield operation. It's a bit confusing at the beginning, but then it makes sense.

Manuel Lemos: OK.

Cesar Rodas: However, I didn't find how it could be useful. From the top of my head, I think when you are writing a database library, that could help you to iterate your results. I'm not sure though.

Manuel Lemos: Right.

So this could be useful, for instance, if you are sending a new letter to millions of users and you send to one user with the data retrieved with the generator. And then, when you send the message to that user, you move on to the next user and it resumes the generator.

Cesar Rodas: Exactly.

Manuel Lemos: So, if I get this right, it continues exactly right after the yield statement. Is that correct?

Cesar Rodas: You are correct.

Manuel Lemos: Oh, well. Because this is so confusing that we'll never know where things are coming.

Anyway, I was asking your opinion about what were the most important features, not necessarily all that were listed in the page. In your opinion, which other features of these new do you think are important?

Cesar Rodas: Well, the finally statement is really good. So, say, right now, it's a chunk of code that will be executed always. So, that saves you a lot of coding, aid to operation that must happen at the end of anything.

So it's like you, want to close a database connection, if it succeeds or if there was an exception. So, the finally is really useful.

Manuel Lemos: Yeah. And I was trying to look, to the whole listing. Other than that, any other of these features you thought would be interesting?

Because there is one main feature which is not really a new feature which is the support for the Zend Optimiser+ caching, which means that finally PHP's shipping with a built-in cache.

Cesar Rodas: Yeah, but that wasn't a problem for me. I've always used one. I think...

Manuel Lemos: Yeah, everybody that has their server can install an additional extension like...

Cesar Rodas: Yeah, but I think one...

Manuel Lemos: eAccelerator or something like that.

Cesar Rodas: Yeah, I think one very cool change though that has been unnoticed is the empty. Because empty now... Empty is not a function. It's a construction. So, before this version, it was just accepting a variable names. Now, it can accept one expression. So, that is really useful.

Manuel Lemos: Oh, I see. I don't know why I actually did not notice this feature.

Cesar Rodas: Yeah. Yeah.

Manuel Lemos: Well, for me, it really does not look that there are so many important features. But it was like, I think, 16 months of development.

The way I see it, the more complete PHP becomes, the more time new releases take to be produced. And that's probably there are not so many developers interested to work actively on newer version of PHP, since it is becoming more and more feature-complete. So, what else would like to add?

Cesar Rodas: I have no idea. But I believe that PHP is getting into a state when it's beginning like a more stable thing. And I see that as a really good thing. I don't have to upgrade.

I've been doing PHP 5.3 for the last couple of years, probably. Now, I switched to 5.4 and like everything work before. So, I don't know how often they do release things. I do read always that my versions, the .4 and the .5. But I could be wrong.

Manuel Lemos: Yeah.

Cesar Rodas: I haven't seen anything new in the .3, in the 5.3

Manuel Lemos: Right. Well, regarding PHP 5.5, I don't think there is much more to say about the new thing. It's great.

Other than sending congratulations to all the core developers that have worked on it, because it did not come out of the blue. There are lots of people involved. Congratulations to the maintainers. I think it's Julien Pauli and I don't know if it was also David Soria Parra that worked on it. He was also the maintainers of previous versions. Congratulations for them for their time and dedication because all of this is volunteered. Nobody is paying, I think.


Manuel Lemos: Nobody is paying for their time. So, I hope this also continues to motivate other people to come and give time and dedication to keep improving PHP on things that may still be missing.

The New Design of site (10:26)

Manuel Lemos: Other than that, a new thing that I just realized recently when I looked at the site, it seems they have launched a new design.

I'm trying to share the screen here. I minimized the window. I think this is the one. OK, can you see this now?

Cesar Rodas: I can see it.

Manuel Lemos: Well, this is supposed to be the old design. And if you go... you may notice at the top, they are inviting you to the switch to the new Beta site, which is just not looks but has some new functionality. Or at least, I have not noticed it. I was zooming it a lot and probably, it was distorting.

As you may notice now, if you go here on the bar, there are fewer links on the top. And if you click on them, you can see a more detailed information about, for instance, downloads. You can download with many things like the current PHP versions, where to obtain development releases as well as other types of downloads. Same goes for documentation, you can get links there to certain documentation sections.

What else? There is also information about community activity, like support mailing lists, conferences, events and so on, as well as get information about where to get help and other things.

Other than that, I was trying to find where I saw a link to go to a PHP tutorial. It's up here probably because they replaced it. Or maybe they just changed it and I could not find it anymore. Well, anyway, Cesar, what do you think about this change in the design of the site?

Cesar Rodas: Well, I'm not a Web designer so I can't say much about the technical details, but it looks marvelous. I like it.

Manuel Lemos: Yeah.

Cesar Rodas: Despite the fact that I'm really used to the old website, I do love this version.

Manuel Lemos: Yeah.

Cesar Rodas: I didn't see though how a function page looks like. Can't open it now, says I don't know,  one function.

Manuel Lemos: Yeah.

Cesar Rodas: So, are you saying it does not work? They have not tried it.

Manuel Lemos: Oh, yeah.

Cesar Rodas: Because...

Manuel Lemos: It's not working for you?

Cesar Rodas: No. I don't remember seeing it. Well, it looks almost like the same thing except by the header. So that is great because I'm so used to that page. But whenever I don't know what a function does and PHP has thousands of functions, so I just open that web site.

Manuel Lemos: Yeah. Well, that's what I do. I practically no longer go to the site and search things. I used mainly to look up for documentation. So, I already type the function that I'm looking for in the URL.

Now, that I got back to the homepage, what I was seeing before, the tutorial link showed up. I think it disappears if you click on other links. And it is interesting because I think for newbies, it is very useful.

They have several Frequently Asked Questions that the newbies ask. And they could go here and just have some very basic examples. Like the basic "Hello World" and something useful, "Starting Working With Forms."

There's probably other things. And, well, I don't know. It seem like a good improvement. Other than that, the old design was what some people think as old and it doesn't matter if the design is functional and people are very productive with it.

Some people complain, "Oh, that site is old, because they haven't changed the design in 10 years."

And this certainly happened with the PHP Classes. When I switched to that design, lots of people were happy without even trying... They did not even noticed that the core functionality did not change because it was not mainly a change in headers and footers and just things related with the statics.

But it seems that for some reason, people feel better just because this is something new. This means that even if your site is not improving, it is always good to keep the looks updated.

I think, at most, we should switch to our new design after probably no more than four years. And if you go to a shopping mall. You see that they keep changing the windows and that's to give the sensation that there is something actually new and sometimes it's not anything new, just a new layout, new products being exposed. But those products already existed before. They're just trying to grab the attention of the customer and just to look modern.

Cesar Rodas: Yeah. Like we used to make jokes about it. Like the Microsoft motto is that "He who can make it right will just make it look right."

Manuel Lemos: Yeah.

Cesar Rodas: This is not the case. I find the website looks nice and has a lot of information, which serve its purpose, which is to...

Manuel Lemos: Yes. In this case, it was not just aesthetics. They added a few details. This tutorial, I think it was a great idea for newbies.

Cesar Rodas: Yes.

Manuel Lemos:. Because PHP is already very popular among newbies, precisely because it is easy to use. But if you can make it even easier for newbies, it will get even more popular. And PHP already has 75% of the web sites. Now, it's going towards 99%.

Cesar Rodas: Exactly.

Manuel Lemos: [Laughter]

Manuel Lemos: And all the anti-PHP users will be even more annoyed. But, well, I would like to apologize to all of them. It was not intentional to annoy them.

Cesar Rodas: [Chuckles]

Manuel Lemos: OK, well, jokes aside, I think it was good, to give fresh new look and to tell people that PHP is not only very mature and being updated regularly, but it also looks fresh. Even if it's just the visuals of the site.

The PHP Internals Book (19:29)

Manuel Lemos: Well, OK, now moving on the another section of this hangout, I would like to comment on something that I discovered recently, but this time, it's actually something that is really new, not something that existed and I was just not aware.

It is something that is called the PHP Internals Book. And this interesting because it seems to be an initiative by several developers... Julien Pauli that we mentioned before as one of the maintainers of the PHP 5.5. And there is also Anthony Ferrara and Nikita Popov. All these people are very well-known and reputed PHP developers.

I think they have a great idea, which is to document better the way PHP Internals work. I just do not understand why they did not include this documentation inside of the site. I don't know if there is any politics preventing that to happen. I have no idea.

One thing that brought me to this site was the fact that, I think it was Julien that mentioned they have a new section on classes and objects. So, basically, this site is useful for those that are willing to understand how PHP works internally and how you can for instance develop new PHP extensions.

Cesar, I think you have developed some PHP extensions, right?

Cesar Rodas: Right. Like, I did two of them. One I finished, I published. And the second one which is a little bit more complicated. I will release it. When? Sometime. And finding information about now is really complicated. Literally, if you want to actually learn, you need to download another extension and see how they make things.

Manuel Lemos: Yeah, learn by example.

Cesar Rodas: Yeah. From top of my head, I think there are only two books. I bought one of them. It's a very good book. But still, I was developing something fabulous, a little bit more complicated. Basically, I wanted to give the possibility from the userland to call to any libraries. So, basically, you would load a .DLL file from Windows and just call their functions and be some sort of a proxy. And finding information about that was really difficult.

Manuel Lemos: Right.

Cesar Rodas: And when I was asking for help, over Twitter and over the IRC channels, the first answer was, "What function does something like that?" I said I don't remember what the function was but I said something like call_user as a function. And they told me, "OK, go and see how that function is being written and do the same." So it was not helpful.

So I think that this initiative is something amazing. If I can help in any way, I would help it gladly. Because I think that when you are developing extensions like that, you became in a classic club, like a line in the Fight Club, "You do not talk about Fight Club!" You don't talk about how you do things. You just do them. And if you can rise up in the group, that you are worthy, then they show you things. So I think that is not right.

Manuel Lemos: Right.

Cesar Rodas: But they did it.

Manuel Lemos: Well, from what I understood this is not exactly a book. Or at least, for now, it is not a book. Maybe it is the draft for an eventual e-book or printed book. For now, it's a site that has this information you can look up. So I think it is very useful as it says. Congratulations to the authors for having this...

Cesar Rodas: Right.

Manuel Lemos: Yeah. That certainly addresses a long-time existing need. And I'm sure many developers will appreciate it and find it a good complement to other existing books about writing extensions and other things related with the Internals.

The Anonymous Exception Catch Proposal (24:36)

Manuel Lemos: OK, now moving on to the next topic, we're going to comment on feature proposal.

Let me just start it here. Oh, this got back to the old design. That's because it's in a different window.

Well, anyway, we just need to comment about this feature. It's just a proposal. Not exactly something that is going to be implemented because for now, it's not even being voted.

It's basically a proposal to have a way to catch exceptions and to not be required to declare a variable to assign the exception object. Well, I think this is probably too basic. I don't know it even deserved to be a feature, I don't know.

Well, it's somebody proposed it is because they have a need for this. But I could not figure what would be the need. Cesar, what do you think? Is this useful?

Cesar Rodas: I do not know, to be honest. They are claiming... I read it. They claim that would help some static analyzer tool. So, for the source codes, I believe that would help to solve IDEs to just analyze better the code. But I cannot see how that can be useful.

And they said that there will be some performance improvements, but I supposed that those improvements are just minor. It's basically, you would not create a local variable, which you will saving some microseconds or picoseconds. That's even slow?

Manuel Lemos: Whoa, that's a great optimization.

Cesar Rodas: Yeah. So, I don't know why, but at the end, I found out why they want to do that. Because that is valid in languages like Ruby, Python. So they want to do this, do that.

Manuel Lemos: Oh! So they want to catch up on features. Oh, Ruby! Ruby has this feature, we have to have it, too! Or else they'll start complaining that PHP sucks, it does not have that feature.

Cesar Rodas: Probably.

Manuel Lemos: Well, OK, yet another one of those features just bloating PHP.

Function Return Type Checking Proposal (27:29)

Manuel Lemos: OK, let's move on with the next topic to comment on this podcast. There was a proposal. Actually, it's not even a formal proposal. It was just a discussion of an eventual new feature that will allow to have something like type hinting for return values of functions. Just like there is type hinting for function parameters. You have now also type hinting for return values.

So, basically, this is like, without putting it explicitly, to do what is necessary to have fully-typed language. I mean, you are not required to declare the types of the variables and the parameters and return the values of function, but you would have a way to enforce that the correct types are being passed to functions.

I just don't know if this would impose a significant overhead if it is enabled at run time.

Cesar, did you look into this proposal or at least discussion?

Cesar Rodas: Yes.

Manuel Lemos: What do you think about the idea?

Cesar Rodas: While I understood, I think this is a good idea but with an ugly format/style. But that is something different. But what it wanted to do, they didn't want to create a fully-typed language. What it wants to do is you can turn some types.

So, what I understood, I can remember, it's the same checking back are happening on the parameter list. So, you cannot say like "This is a number." Like that's not possible. But you can tell "This is an object of this type" lined up So they wanted to do that, exactly that.

Manuel Lemos: Yeah.

Cesar Rodas: What I heard, I think it was from Rasmus in some podcast, that that makes sense because if you have a function and it expects a number and you pass one string, nothing happens. So it won't be a fatal error.

But if you have a function that is expecting one PDO object and you pass one number, that would break it. So, that is where the check happens. So the same thing, they wanted to apply now, or somebody wants to apply that to the function, returning type.

Manuel Lemos: Yeah.

Cesar Rodas: I think that could be useful, especially because it would save us a couple of lines of code, like whenever you are calling to one function that you do not trust. Basically, you would not check that its output is what you expect.

Manuel Lemos: Right, but it seems the type hinting for information would have to go on the actual class declaration, right? Or is it on the calling function.

Cesar Rodas: That would be on the function declaration.

Manuel Lemos: Yeah.

Cesar Rodas: I believe that how people would use is that they would find a couple of interfaces. And in the interfaces, they would put a function that are raise that must return an object of I don't know, of some class.

Manuel Lemos: Yeah.

Cesar Rodas: Or some sort of object. I think that's cool. That's not particularly necessary to make PHP a better language, but it's something cool.

Manuel Lemos: Yeah. I think it's useful. But, usually, when you see people proposing things like thats a way to enforce data types. What they claim is that it would have a significant overhead to the execution of PHP call.

Well, I did not notice anything like that in the comments, but I also did not look at all comments with attention. So, I wonder, do you think it would add a significant overhead? Or maybe it is something that is not a big deal and you can even have that overhead at runtime... I mean, production environment.

Cesar Rodas: I think there will be a couple of more op codes that will be generated. That's not going to be the end of the world. Because right now, I'll say it, I am writing a library and I'm giving the possibility that someone could provide me a call back function. And I never thought why they return, so I will check it.

So I check it whether I like it or not. And if something is wrong, I throw one exception. So what they are proposing now is an advanced step happens automatically, if you declare your function in some way.

Manuel Lemos: Yeah.

Cesar Rodas: Which as I said before, very useful but I don't know if it would serve its purpose. Because if change in syntax and it became something super verbose like Java, that would just scare people out.

Manuel Lemos: [Laughter]

Well, this is optional. You just declare the types if you want them. If you do not want them because you think it would become too slow or if your religion does not permit it, or whatever is your reasons, I think you cannot use it.

There was somebody that actually proposed to have a new option in php.ini to disable the checks, for instance, in the production environment. So if there are any issues, they will not trigger any exceptions or whatever happens when you break the expected type.

Well, I think that probably would address that concern of the eventual overhead. But usually when somebody propose that, there is somebody that says, "Oh no, we already have too many options in php.ini."

Cesar Rodas: [Chuckles]

Cesar Rodas: Yeah. But you have to think that all these work, proposals, they came either from people from foreigners, like people from all the languages or from framework guys so they are not concerned about performance.


Manuel Lemos: Yeah, right. Well, they are already using frameworks, so it would probably wouldn't add much more overhead.

Well, that was a joke. I do not know. I'm not sure if it was Rasmus that commented something along those line. If you're already using a framework, you already have given up too much performance, so...

Cesar Rodas: Exactly.


Cesar Rodas: Yeah.

Manuel Lemos: Well, it depends on the frameworks. There are those really bad ones and there are just the bad ones.

OK, jokes aside, well, I think it is useful. It has its purposes and it would be helpful to contribute to better quality of the code on which you can eventually catch up more bugs before shipping your code to production. So I think it's a very valid concern.

PHP Developer Reputation System (35:36)

Manuel Lemos: Well, anyway, moving on with the podcast. Now, I would like to comment a bit a couple of things related with PHP Classes site.

One is a long-time request for feature and this is totally related with the fact that I invited you to come to this podcast, which is Reputation System that after... how long was it? Six years we've been talking about having the karma system in PHP Classes.

Cesar Rodas: Yeah, exactly, it was it seems I met a friend who wrote a web site which looks like Digg.

Manuel Lemos: Yeah.

Cesar Rodas: But at the time he was bitter and he wrote the Spanish version and he wrote some script of karma system and he made it open-source. Basically, he wants to keep some sort of worth to what they vote and he wrote a system. And I show you that. I said...

Manuel Lemos: Yeah.

Cesar Rodas: That was right, if you can rate user by how valuable they are to the community, rather than just to add to the account. And we were talking about it and I'm very glad that it is finally in production.

Manuel Lemos: Right. Well, it's not like it took six years to develop.

Cesar Rodas: [Laughter]

Manuel Lemos: It was more like seven months that it took to develop. It was a part of a greater plan which is to include new features that give greater feedback to the authors and also users that are not authors of classes regarding how they are doing.

Also, to see a sort of a total of their participation in the site in the form of points that are assigned to each good action that a user does on the site.

So, basically, there is this article that I have published a couple of weeks ago. And it even has a demo video that you can watch later if you want. But I can show you quickly how this works because if you go to the... now, every page on the site for users that are logged will show this yellow button at the top.

So let's see how this appears in practice. That yellow button shows some points that you have earned and is actually a link to your reputation page. So you can see all the good actions that you did in the past.

In this case, I'm showing here what I have done recently. I haven't done much. There is a large number here which represents the points earned due to the fact that the classes that have been downloaded by users of my class.

And this is basically a report that shows all the actions, all the points are earned, sorted by time. I have different types of points related with different types of actions. And each action is related with at least one type of reputation. For instance, if I am a class author, there are actions that have them as class author.

And there is a link here, for instance on the class author page that I can click to view all the actions that I did in that type of reputation. I have added lots of classes and you can see here the points that I've earned for all these classes.

I can also lose points if I reverse an action. For instance, I have removed one package that for some reason now, it was no longer interesting. So I lost the points that I have earned by then. So, there are other actions.

You can see the details and you can see the whole listing over time. So, it goes back to the beginning of the site. It's not just the actions that you have done recently since the system was launched. So, you can look at it with all the details, all the dates, other things that happened.

Other than that, you can also see your total points by actions. For instance, I have participated in all these actions. I have earned these points. And there are a lot of other actions that I may have not yet participated so I have not earned any points. But I could engage on those actions and earn more points. So this is a sort of a hint on how to earn more points and increase my reputation.

There many types of actions that are not yet supported. The site is not yet ready to recover the points that you have earned for doing those actions, but these will be implemented over time.

Other than that, you can see your total points accumulated by types of reputations. For instance, if you go on this page and you can see the types of points that you did as class author. There is also another type of reputation called experience. These are basically things that you did repeatedly coming to the site or did somehow other action repeatedly.

There is another type of reputation which is Reviewer which consist of points that you earn for reviewing other people actions like rating packages or voting on Innovation Award and nominations.

You can even earn extra points if you nominate a package that was the winner of the month. So that means that you somehow got it right, like others who voted on the winner. So you get extra points and so on.

Other than that, there is a ranking of all the actions. All the points that you earn and you can see how you are doing relatively to other users.

So, guess who is number one?

Cesar Rodas: I am.

Manuel Lemos: [Laughter]

Manuel Lemos: So are you proud? Did you tell your mom, "Mom, I'm number one!"

Cesar Rodas: Yes, I did.

Manuel Lemos: And if somebody does not believe, "Wow, what did you do to earn, to be number one?"... or whatever is the number... you can click here on your name and you can see the details. You can see all the actions and see why you earned all these points, why you were the leader.

You can see, you earned the Innovation Award twice. You got 200,000 points. You were the winner, actually. You got also points for depending on the results that you reach on the Innovation Award. You also get points for being nominated for the Innovation Award and get extra points for being the winner.

You also get many points for publishing packages and so on. You can get all the details that I'm showing about my participation. You can also see about other users.

So, this is useful to be transparent, because if you are showing your ranking and you want to know why some user is doing better than another, you can actually see why did they scored better.

Cesar Rodas: Yeah. I have a technical question about that whole system, if I may ask.

Manuel Lemos: No, no, you cannot ask.


Cesar Rodas: OK, I will ask it anyway. About that system, I believe that needs to calculate a whole amount of data for millions of users, probably. You wrote all that in PHP?

Manuel Lemos: Uh...


Manuel Lemos: No, I use C++.

Cesar Rodas: Ah!

Manuel Lemos: Just kidding.


Manuel Lemos: No. Well, you know, everything that is on a database and what is the slowest thing on the system is not the PHP, it's the database.

Cesar Rodas: Yes.

Manuel Lemos: Anyway, I supposed that your question is related with the fact, "Oh, is PHP capable of handling large amounts of data?" Well, yes, but the answer is related with architecture. It's not just a matter of the language is fast enough or not. It's a matter of architecture.

First, I do not calculate the reputation of users that are not coming to the site. So the site has like 1.2 million users... registered users... and the site is not calculating the reputation of all of them, just only the users that are coming to the site.

So, it's like probably a bit more than 100,000 users. Still it's a lot of users but all the things are calculated gradually and it's not like I'm going to make this big calculation. And they are scheduled to calculate. For instance, the ranking is updated only once a day.

Cesar Rodas: OK.

Manuel Lemos: I do not update the ranking on demand. It would be stupid. It would not serve any purpose.

Cesar Rodas: Yeah. Exactly.

That was my point. That was what I wanted to get. You can do and you can write, as I write many times like console scripts in PHP that can run from a cron job and you don't need a framework to do that. It's interesting.

Manuel Lemos: No, no! No, frameworks make it worse.


Cesar Rodas: Exactly.

Manuel Lemos: No, just kidding. What is done is, you look at some task, if that task will take too long, first, you cannot do it on demand.

Cesar Rodas: Exactly.

Manuel Lemos: For instance, the calculation of how many users your package have. If you're having new users every day, the numbers not updated live. It's just once a day.

Cesar Rodas: Yeah, exactly.

Manuel Lemos: And another detail is that I queue... well, queue is not probably the correct word... I do it in assorted manner. For instance, if I need to calculate the ranking of the users by reputation, I only do that after I have calculated, updated the number of users of each author, each package. So, I avoid having parallel scripts doing heavy task.

Before you ask, all this is done in a single server.

Cesar Rodas: Wow.

Manuel Lemos: It's not that I need a cluster.

Cesar Rodas: A thousand servers. The cloud.

Manuel Lemos: I need the cloud! You need the cloud! You need the cloud so you can be elastic. Well, if I ever get to the point of needing to have a cluster or put it in the cloud like people call it, it's because it's good news. It's because the audience raised to an incredible proportion that could not really fit it all in one single server.

But well, eventually, that will happen. But for now, it's not yet there. I think I will get there, sooner or later, because the site keeps growing. It keeps growing like 200 or 300 new users every day. And that's a lot I think.

And when you reach that point, that means they need another server, but not because you get results. It's because the database sucks. And they all suck, because they do a lot of things that takes time.

Manuel Lemos: Yeah.

Cesar Rodas: So, PHP is not a problem. That also would mean that you are wealthy so you can just buy an entire cloud when you reach that point.

Manuel Lemos: Oh, sure. I'll be very, very rich. And I'll buy Amazon.

Cesar Rodas: [Laughter]

Manuel Lemos: Just one company on the top of my mind. I'll buy Amazon. And I will be with all that load.

Well, anyway, just to complement this. This is just a part of a longer plan to make the experience of the site more fun and rewarding for people that actually provide value participating in the site in many ways.

In the previous step that was a part of this plan, it was implemented... a system of missions and levels which was mainly targeted to class authors. So they could engage on a series of missions, that they could do small things that will benefit their exposure and the visibility and recognition that they may get from their work.

But this time, this reputation system is not targeted just to class authors. You can see that you can engage on actions that are useful to make the site better but you do not need to be a class author.

For instance, you can rate packages. That's one thing that is really, really lacking. The site needs to encourage more users to rate packages, so the other users can realize better which are the packages that are more appreciated, not necessarily the ones that get more downloads, which sometimes can be a bit misleading.

Cesar Rodas: Exactly.

Manuel Lemos: Other than that, this is just one step, as I mentioned. The following step is to answer that eventual question that some authors and users say, "What would I do with all these points? Are these points any use for other than showing rankings?" And the answer is yes.

The site will provide privileges to users so they can redeem those privileges according to their interests using those points. They do not lose the points. They just take them out a sort of a credit and they will use those points to obtain certain privileges.

Some of the privileges are things that I wanted to implement but I did not implement yet because if I provide to all users of the site at the same time, then it'll cause a major load to the site. And it would not be viable to provide to all users.

But if I can provide to a small number of users that want to have those benefits and they are willing to do some actions to earn points and redeem those points by getting those benefits, those privileges, that would be more viable.

For now, it's just a plan, there's a lot of work ahead. This part of the reputation system is not totally done. As you may have seen, there are actions there that the site is not yet able to recover past actions to assign points. That will be done in the next days, weeks.

And there are many small things relating with this reputation system and then, finally move on to the next step which is to redeem privileges.

Anyway, talking about privileges, Cesar, in your opinion, which would be some interesting privileges that you would like to get using your points? Which would be interesting for you and maybe for others? Do you have any ideas?

Cesar Rodas: I have no idea. Having my name in the first place, it's something that makes me more than happy.

Manuel Lemos: Yeah, but that may not last because your trend is to go down. Because you are not scoring much points and soon, somebody will be able to score enough for them to surpass you.


Cesar Rodas: Yeah. But I would submit some packages from my GitHub. Now, that to finish that features.

Manuel Lemos: Right. So you are resting while you have some lead.

Cesar Rodas: Yeah.


The Future Features of PHP Classes (54:10)

Manuel Lemos: Ok, now moving on the next topic which is related with another article that I wrote about something related with this which is the fact that PHP Classes reached 14 years of age, is now a ...

Cesar Rodas: A teenager.

Manuel Lemos: A teenager and it's getting old. It's getting more people complaining about it and this article somehow addresses those complaints which are related with future features.

First in the article, I mentioned what I've been doing lately in the site. And I mentioned the system of missions and levels that was launched last year and also the reputation system.

And for the plans for the future are several things that are being considered. It's not like I will implement all of these things soon. I have to sort them and I have to post them here. And there is also a survey that the users can help by filling up and telling what they feel would be interesting to have first.

I have considered several things. One of the things is the privileges for reputed users as I have already mentioned which is to redeem those points and get additional privileges.

Many privileges can be considered. For instance, if you are an author, you want your packages to be published immediately, you can redeem some points and have priority in the moderation of new classes that are being approved.

If you, for instance, are very interested to know what would be the next packages that are going to be published, you could, for instance, redeem a privilege that would allow you to see the packages that are in the moderation queue and already take a look at them, know them in advance... and many other privileges.

I have been collecting suggestions. One of those suggestions, for instance, in the case of the authors, some authors would like to see some graphs and charts about their progress over time to see how they have increased, how they are increasing or not in the rankings and so on. And there are other things, some things may be more interesting than others.

For instance, if you are looking for a job, you can have the privilege to apply to the job with priority, relatively to other users. And without having to pay for premium subscription, which is one of the benefits of the premium subscriptions.

So, all the benefits of the premium subscriptions eventually will turn into privileges that can be redeemed using the points that users had accumulated, and so on.

As I mentioned, there is a survey. If you want to participate and give your suggestions and rate all this future features and tell which ones you would like to see first, that would be helpful.

I'll be also posting the link to the survey again in the Show Notes of this podcast and hope other people can help.

I already got a good bunch of participations. Not many like 10 or something. Some people already suggested some features. It is interesting that some features that were proposed already exist. That's because they are probably not getting very good visibility on the site. So that is also helpful to make them more visible.

And, other than that, there are several other features here like, for instance, having a way to bookmark and tag packages. So users can find those packages they've been looking for later when they have more time.

Also, assign some useful text that remind them what they are about. This is a feature that has been requested for a long time but unfortunately, it was not possible to somehow implement it because there was always things to implement first.

Other than that, another feature that is common source of complaints that is related to usability, have a way to navigate faster through the packages and the files of the packages. It seems to be consensual that lots of people like, for instance, the way GitHub presents the files and the packages in the repositories.

The idea is to somehow implement something similar to minimize the clicks and the time people spend on just browsing code. I think this is one of the, probably, most voted features.

Other than that, it is also being considered to make the site look better on small screens, could be mobile devices or screens with lower resolution or at least that are small size... could be tablets, could be mobile phones and so.

Cesar Rodas: I don't know how that particular thing or suggestion would be any useful. I can see myself a developer and I hate my phone because of the fact that it didn't have a keyboard that I can touch. It's everything on all of the screen. So it's cool for doing things. I cannot even connect to one server. I cannot write anything but a short SMS.

Manuel Lemos: Right. I think this is more to browse content just for reading purposes. For instance, blog articles, you can read them on your mobile screen but you probably will not be motivated to comment because it's very frustrating having to type on small screen.

Cesar Rodas: Exactly.

Manuel Lemos: So it'll probably used for reading stuff but not for interacting. Anyway, this is not one of the most requested features. It did not get many votes but some people may find it interesting. So probably, this will not get a good priority.

Another feature that some people requested, mostly developers, is to have the support to Composer. For those not familiar with Composer, it is an interesting tool that allows you to download packages in their dependencies.

For instance, if a package needs another set of packages, those other packages, it will be downloaded. So the idea is to do whatever is necessary so PHP packages can be downloaded by users that want to install packages using Composer.

Cesar, you are one of the people that requested this feature. How important do you think it is for you and for other developers?

Cesar Rodas: Well, it depends. It is great because you'll say, "I want to use this class and how I would do it, that's where the hard thing comes." Like, by sending a pull request to the maintainers so they can read the PHP file formats.

So, what we gain by having Composer is that it will fetch all your dependencies and will press them in some folders, so you can use them. However, it is prepared to work out of the box if you follow a couple of rules. For instance, the autoloaders. There are ways in trying to make Composer to just discover every possible class.

I think that feature is not so difficult and that it brings a lot of benefits for some developers, especially if you are writing a system and if you are adding like a 5 to 20 servers. So that process of fetching classes and their dependencies are just much easier.

Manuel Lemos: Yeah, I think I see the use case for that. I think it will be helpful for the whole PHP community in general. They can even combine classes from different repositories. And from what I could gather, this probably is already working.

I mean, I do not need to change anything on PHP Classes because it seems that the Composer supports basic HTTP authentication.

So in the end, the work necessary to implement this would be even less than what I thought. Probably, it would not even require any patch to be submitted to the Composer developers, which would probably be great as it will only depend on having time to just make us a few adjustments on PHP Classes site. Because I think they support HTTP basic.

The only thing that I would like to avoid is for people to share their real passwords on the site, especially now that the password are not exactly on the site. So the site could not even put them there. But, OK, let's see how this works.

Cesar Rodas: Yeah. So, for that to happen, two things should happen. The first thing is that you must generate some composer.json file for those packages who do not provide one, which I bet it will be for 99% of the classes.

Manuel Lemos: Right.

Cesar Rodas: So that file would... That should be somehow simple. That is not the difficult part. In the PHP Classes site, when you open one of your classes, you just past it, so you put some sort of hash there and you copy and paste it into your Composer file and it will just work.

So I rather have some sort of unique hash rather than typing my password, so I'll feel just much, much better.

Manuel Lemos: Yeah. That's what I was saying. It will never make you share your password.

Cesar Rodas: OK, great.

Manuel Lemos: A new random password will be generated for that purpose. And for those that are wondering why a password would even be necessary, it's because the site keeps track of the users that download each package.

And that is important for authors for two reasons. One is to have accurate download count. Sites that do not implement authentication, they don't know if the user has downloaded a package today and tomorrow is the same or not. And worse than that, I have seen this... I think in PEAR, they had that problem. I don't know if they tried to stop it somehow.

Nowadays, more than 80% of the traffic of the Web is caused by bots. Bots that crawl the sites. So sometimes, "Oh, my package was downloaded by hundreds of thousands of users." No, it was not users. They were not real users, they were crawlers, bots that crawl your site every day.

And they crawl sometimes more than once the same page. And they'll crawl it again tomorrow because there is this competition between search engines. And they need to get all the changes. And since they don't know when the change happens, they need to crawl the sites multiple times a day.

And if you go on a site and you see, "Oh, I have hundreds of installs and downloads!" Well, if the downloads were anonymous, chances are the installs are not real or actually done by bots, which something that happens a lot.

And there are new bots being created every day. Not just Google or other search engines. There are bots for everything. And this is really annoying, this causes a lots of load to the site, unnecessary load. You can somehow put some exclusion rules in the robots.txt file. But many robots do not honor those rules. It's really annoying.

Well, anyway, this is just a detail. And using authenticated downloads, the site will be able to provide accurate accounts. And the other reason to have authenticated downloads is that the site will know which users have downloaded your packages.

And if your package is updated, the site is able to send an alert to those users that have downloaded the package and say, "Hi, there's a new version." You do not need to crawl the site everyday just to know that the package was updated. This is useful.

Of course, some users do not like to register on sites and I totally understand that. I don't like to register on the site. But since some time ago, the site implemented what we call as social login, which is you can log in with your accounts at social networks and other sites, not just Facebook and Google can log in with your account.

You do not have to go through the old process of verifying your email address to assure that you are really the owner of that account. You are not creating fake accounts just to increase your ranking.

And it supports, besides Facebook, Google and Microsoft account... I mean, Hotmail and Windows Live, whatever they call it these days... Yahoo! and Stack Overflow. There are lots of users coming from Stack Overflow.

Cesar Rodas: I also remember GitHub.

Manuel Lemos: Yes, GitHub was the last to be added. I don't know. Maybe I'll add a few more. But the reason why GitHub was added for last is because GitHub OAuth Support had a bug. So I've been in touch with them and tell, "Oh, you have a bug on the parameter that came from the redirection." It doesn't matter, it's a detail that's with OAuth. But they had a bug the parameter can repeat. And I reported them.

They took like a few weeks to fix it, but they finally fixed it in the latest version of their API. It was great. Now, it is possible to authenticate. They even added support for the API to be read-only. Because I think initially their API would allow sites that obtain access to the accounts to actually change the account and that's not the purpose of the site.

Cesar Rodas: Yeah.

Manuel Lemos: So, it's now working and the engagement even increased a lot. Any new users that no longer complain about the actual redirect to be registered. Because it's basically just two clicks just to go on the social login site and return and complete their registration on the PHP Classes site and there you go.

This is a long-time complaint that was finally solved. Shame on me for not having solved it sooner but well, there's no longer that complaint.

Cesar Rodas: Yeah.

Manuel Lemos: OK, well, basically...

Cesar Rodas: And that...

Manuel Lemos: Sorry?

Cesar Rodas: I was about to say that is important because GitHub is a mainstream. And all the hipsters like it.

Manuel Lemos: Exactly.

Cesar Rodas: [Laughter]

Manuel Lemos: Yeah. Yes, and now that you mentioned that, sometimes, I hear "Oh, PHP Classes is dead, because there is GitHub now." Wait. There are people that actually came to PHP Classes and import their packages from GitHub.

So PHP Classes does not exactly do the same as GitHub, it's not for the same purpose. It's more a complementary purpose which is to give greater exposure. Because when you publish a package in PHP Classes site, there are thousands, hundreds and thousands of users that get newsletters and everything to know about those new classes.

And once you publish in PHP Classes, you get even more exposure than you just publish on GitHub. GitHub is fine for what it does which is to be a project hosting repository, all those tools that facilitate collaboration. But that's mostly it.

If you want to promote a project in GitHub, it's up to you to do the necessary marketing. It's not like you put it there and you suddenly become instantly popular. You need to do some advertising. You need to spread on other sites and hope for the user to pay attention to your work. It's not instant popularity.

OK, well, other than that one other feature... it's not exactly a feature... something that I'm planning to implement on the site is to have a new section on which I am planning to implement on the site is to have a new section on which I'll be promoting products that developers want to sell.

Like, for instance, developer tools, commercial components, training courses, events that you want to sell tickets. And if you are interested on having PHP Classes to promote those products, just go on this article. I'll be publishing some links to the context, you can go there, to this article, and follow the recommendations to get in touch and have some support.

Actually, if you fill up that survey about the features of the site that I put there, I will see that you will be interested to get a reply regarding what you are interested to promote. So that would be the way to go.

Well, with this, there's a lot to do. It would take some time to implement these things, but the future is bright. After all, this 14 years of PHP Classes continues to grow at a reasonable place. And despite all those people that say, "Oh, PHP Classes is going to die because there is now and this site, that is a competitor."

Well, I'm not in competition with anybody and that was never the purpose. The site has a large user base and continues to grow, and that's because it continues to be useful.

JavaScript Innovation Award Winners of April 2013 (1:16:13)

Manuel Lemos: Well, regarding this, now it's time to move to another final section on which we comment about the Innovation Award winners.

First, we start by the winners of the Innovation Award on the JS Classes site, which is the brother site. This time, we are going to start commenting first about the winners of April.

The JS Classes site is a much smaller site so there's not many sites being published there. It grows. Sometimes, it gets stable and during the vacation, it gets a lower participation, then it continues to grow.

So this, we have three nominees that were voted in... Well, they published on April, they were voted in May and in June, the results come out. So from these three, which ones would you like to comment, Cesar?

Cesar Rodas: OK, I found more interesting the winner which is the D.js. What it basically does, it solves one asynchronous problem which is that asynchronous problem which became mainstream with a Node.js. Because we were all doing it, without knowing that it was actually asynchronous JavaScript.

Manuel Lemos: Yeah.

Cesar Rodas: So, it solved a problem by the concept of the promises, which basically, you create one action and then you give it some call backs. So, if it succeed, call this function. If it fails, call this other function, and so forth.

Manuel Lemos: Yeah.

Cesar Rodas: So, it solved one problem, which is you don't have to code one function in two function as their promises.

Manuel Lemos: Right. Right.

Cesar Rodas: And I've been looking into the implementation and it's beautiful and very useful.

Manuel Lemos: Yeah. Well, this one is published by Jonathan Gotti from France. Well, I'm sorry, I'm not able to make the French accent. So I'm sure that is not the proper way to tell Jonathan's name.

Anyway, I think this is interesting. We comment about this like monthly. There is also a podcast for JavaScript that we record also once a month, with Michael Kimsal usually.

And we keep talking about these ways to handle conditions that are evaluated asynchronously and using promises in this case, Jonathan provide an implementation that you can handle two possible outcomes, succeed or fail. I think it's accept or reject, the correct names.

So this is interesting. But moving on to the next package first. I would like to mention one, submitted by MarPlo from Romania. I think his name is Mauritius. If I'm not mistaken, MarPlo is a nickname.

And this package, it is interesting. It's not like the usual classes that do something specific and that's it. In this case, basically, it's a sort of a visual editor who can interactively compose menus.

Menus made of forms, select inputs and that sort of work as linked lists. He has a demo page... let me see if I can show it working... demo. Oh, here, you can create a new menu, have some function here. You can have some values. You can already see live how it works.

And, really, it is interesting because you can add other levels. You can add other items to the list. And you can also save it, save the definitions to a text file or MySQL database with some help of some server side code. In the case, the server side code is implemented with PHP. So, this is a composite component that has a PHP part and a JavaScript part.

So, this is an interesting component because you can see it working. It's a sort of an application rather than a simple component. And it's great that we see more complex components like this in the site. And I hope Mauritius and other developers continues sending more components like this.

The other component that I also want to mention is called jQuery Sheep. It was developed by also a regular contributor of the PHP Classes site. His name is Tobozo. I'm not sure if this is his real name. Probably, it's also a nickname.

What it is, it's actually a funny component that, as you may see here, it shows on the screenshot, it shows some elements on the page and you can see some sheep walking around. This is very funny.

Let me see if I... There is a live demo somewhere. OK, sheep generator, I think that's... Is it this one? OK, here it is.

Cesar Rodas: [Laughter]

Manuel Lemos: And you see some sheep walking around. This is very funny. I think you can influence on them, not sure. And they even make funny noises. I don't know, can you listen to the noises?

Cesar Rodas: Not exactly.

Manuel Lemos: Yeah.


Cesar Rodas: Yeah.


Manuel Lemos: They only make some noise once in awhile. This is very funny. You may think, "Oh, this is not useful for anything other than make it funny." OK, but we'll never know.

People coding is not just about doing something serious. Few things can also be funny. OK, I need to close this window because it will keep making noises and we don't want that.

PHP Innovation Award Winners of April 2013 (1:23:44)

Manuel Lemos: So now, with this, we move on to our final section on which we comment about the latest classes this time published on the PHP Classes site, also in the month of April. Let me screen share the whole list here.

OK, we have like seven nominees. These are a lot. Unfortunately, we do not have time to comment about all of them. We can just comment on a couple each. Which ones would you like to comment, Cesar?

Well, the first one is the PHP Reduce JSON. I promised, though, that I will look how it works exactly. But what it does, it removes some redundant things from a JSON. So it makes it more smaller and after that, the final result is a total valid JSON which is what we want but smaller.

Manuel Lemos: Yeah.

Cesar Rodas: Which is useful, because as you may know, if I never mentioned it, I'm crazy about micro-optimization. And this is one micro-optimization that I would love to interpret it myself but somebody beat me. And this class is written by Dmitri Russu, I believe. He's from Moldova.

Manuel Lemos: Yeah. I think, well, I'm not sure if... are you sure this generates a valid JSON?

Cesar Rodas: Yeah, from one...

Manuel Lemos: Because it provides also a decoder in JavaScript so I was wondering if your claim that it generates valid JSON would be accurate.

Cesar Rodas: Yeah. I was looking at one of their samples. And that is what I understood by it. It is the written file. From the written file, they do the coding, like it's a whole library which is RJSON.unpack. I wish that it's parse. However, they also fixed one problem about the old Internet Explorer. There is no JSON.parse, see?

Manuel Lemos: Oh yeah.

Cesar Rodas: Yeah.


Manuel Lemos: Right. I keep forgetting that browser, I don't know why.

Cesar Rodas: Everybody does. But someone claims that the Internet Explorer is a new one. I thought probably 10 or 11 is much better. That may be true, but I'm wondering why nobody updates.


Manuel Lemos: Yes, it's Microsoft holding off the development of the Web.

Cesar Rodas: Yeah. And the second class I choose is the winner, which is the PHP ONVIF. I don't know about this protocol but I was reading just before the show in Wikipedia and it seems that you can do a lot of good things with this protocol.

So this package, even if it's the protocol itself in PHP, so you can do operations to a video. I see from the example package that you can just add username and password and you can make the video profile, the format, the capabilities and the version devices and so forth and so on. So it is so far useful.

Manuel Lemos: Well, this is very specific to a type of hardware that supports this features. From what I understood, it's not exactly propriety protocol. It works based on SOAP requests. I think it's more an API implemented on a hardware device.

Cesar Rodas: Yeah, now, it is what it would claim, because its name means Open Network Video Interface Forum. So, I believe this is a standard which are implemented by hardware vendors.

Manuel Lemos: Yeah.

Cesar Rodas: Yeah, I think it's common API implemented by recent types of hardware devices. And with this component, it seems to be useful for that purpose.

In this case, it was developed by Lorenzo Toscano from Italy. So kudos to him. It is interesting it won the Innovation Award this month. It seems there's quite a few developers that appreciated this package. It's either that or his mom created many accounts and voted on him.


Manuel Lemos: Just kidding. No, it's not true. The site can detect moms that are voting for their sons and we eliminate those votes. It's not fair. There are some moms that are more enthusiastic than others.

Cesar Rodas: [Laughter]

Manuel Lemos: Now, more on the serious side, I would also like to comment on a couple of packages. Unfortunately, we do not have time to comment on all.

One of them is this one called PHP Digital Download Script by Vincenzo Di Biaggio from Italy. What it is, basically, something that I see requests for this type of application, which is to have some files that you want to make available only to some users, probably users that bought some license.

And with this package, you can manage those files and control users that can have access to those files and even have some statistics. So I think this addresses frequently needed type of component. So kudos to Vincenzo for his contributions.

And the other package that I want to comment this time is the PHP Disqus Comments by Arturs Sosins, also a regular contributor of both PHP Classes and JS Classes.

Basically, he submitted a component that allows you to integrate better your comments on your blog eventually, WordPress, as it can export your comments in XML format, so it can be imported by the Disqus commenting platform, which is becoming quite popular. You can see it in many sites.

Personally, I have not used it. Actually, I do not even use WordPress or any specific blog systems. But I think this would be useful to many people, so kudos to Arturs for his submission.

Conclusion (1:31:30)

Manuel Lemos: Well, basically, with this, we practically ended this podcast. It was a bit long because we commented a lot about interesting things, not only related with PHP world, but also things about the PHP Classes features and developments. And I thought it was useful.

It is already too long. So I will not add any further other than thank you, Cesar, for coming and giving your insights. And on my behalf, that is all for now. Bye.

Cesar Rodas: Well, thank you for the invitation and see you next month, probably.


Manuel Lemos: OK. Bye.


You need to be a registered user or login to post a comment

1,615,229 PHP developers registered to the PHP Classes site.
Be One of Us!

Login Immediately with your account on:


No comments were submitted yet.

  Blog PHP Classes blog   RSS 1.0 feed RSS 2.0 feed   Blog The Maturity of PHP -...   Post a comment Post a comment   See comments See comments (0)   Trackbacks (0)