PHP MySQL Website Programming
In brief: This book takes you through designing a PHP website, featuring the usual bundle of generic features, simple content management, adverts, forums and an on-line shop. It's not intended as a definitive codebase of the absolute best design, but fills a big gap between trying to develop PHP with functions and lots of include files, and the full Computer Science bible of Design patterns.
For those people (and there's a lot of them) who have grown from Word macros and Visual Basic, then had a lot of fun learning PHP, this book provides an excellent gentle path towards using classes in PHP and applying them to real world problems. Like a lot of Wrox books, it's jam-packed with code, with a good flow of new information in each chapter.
What I likedAs a programmer who many years ago swore blind that there was no reason for using classes and objects on websites (the equivalent to a misspent youth), this book gives good clear examples on how they can provide advantages over just 'include' and a few functions.
The book is enjoyable to read; it focuses on the step-by-step delivery of a very dynamic website,starting with the basics of designing the file layout and how the files will work together. It then goes into more detail on delivering each feature, provides enough general ideas to help most PHP enthusiasts and budding developers understand the basics and advantages of OOP programming (although there are a few functions thrown in to ease in those not conversant with OOP).
The website that you learn to create (using the Problem - Design - Solution approach) is available for you to see online here.
Although a lot of the code is focused around implementing a reasonably simple set of Patterns, Data Objects and Page execution scripts, there are a few gems in there.
- Utilizing quite a few PEAR classes including the Database abstraction layer, Mail Sending.
- A nice section on the basics of RSS and XML, not to detailed level, but a good warmup for anyone coming from a System Admin or Simple Visual Basic level.
Ok, It's not for everyone. If you've done any Java or C++, this book is going to be a bit below you. Design Patterns are not mentioned directly in the book, although a number are implemented. The book misses out on quite a few important ideas, like templating php sessions in the body, although it does touch on the subject near the end. Given the target audience, of PHP of beginner to intermediate level, it does have a few unusual code styles in places, which hopefully the readers will not over-apply.
What you will learn from this book
- Elements required to build a useful 3-tier web application
- Design and construct an interactive User Interface (UI)
- Provide a CMS environment to manage content securely and extensively
- Create visitor accounts, to register and manage unique site visitors
- Build a simple news management and delivery system
- Create a syndication application
- Generate a sustainable revenue stream from advertising
- Implement an online visitor poll
- Create a fully featured discussion forum
- Build an online shopping cart system with checkout features
You can purchase PHP MySQL Website Programming from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
Seriously, a college education in MIS provided everything you need to create a fully scalable, multifacted, fully functional e-commerce portal to create new paradigms of customer interaction.
Although I use Java, where OOP is hard to avoid (and I wouldn't want to most of the time), I don't see the need to introduce the performance sapping abstraction of setting up classes and so forth with web scripts.
Let's face it, by the time you've declared you classes, instanced everything a procedural approach would probably have executed and be wating for the next client...
Code, Hardware, stuff like that.
"At this point, you cringe in fear of two problems, the spaghetti mess that you are about to deploy, the ongoing maintenance nightmare and the horrors of modifying it to fit your needs."
The review exerpt really struck me. That's what I do alldays. Maybe I should consider reading this book. doh!
Girls are strange. They don't come with a man page.
-- Michael Mattsson
Build a simple news management and delivery system
Generate a sustainable revenue stream from advertising
Implement an online visitor poll
Create a fully featured discussion forum
?????
Profit!!
Information wants to be beer.
The problem is that with security, the very best possible way to keep your site secure is to a) purify incoming data and b) keep your source to yourself unless you want people to let you know where the bugs/holes are. I know the open source community is really good and has it's place, but when it comes right down to it, if you fully customize your PHP, then it's more secure because there aren't a bunch of script kiddies looking for ways to hack you on security forums (a la PHPBB script attacks). The good thing about PHP in the open source sense is that you can read it and understand how it works. I don't recommend using any custom packages because there is risk involved that your doing so is going to attract attention from script kiddies. The best thing you could do is learn PHP by the open source examples (run phpbb and read it, run smarty and read it - understand it) but then create your own base, and add your own layers to it.
have we had a ton of PHP/MySQL book reviews lately?
"For those people (and there's a lot of them) who have grown from Word macros and Visual Basic, then had a lot of fun learning PHP"
What do you mean, "fun learning PHP?" I'm a Microsoft guy and there's only one way for me... the Microsoft way. Buddy, I think you should be talking about ASP and VBScript, the nectar of the gods.
I started my career hacking up Word macros, then slowly picked up Visual Basic. I can't wait to see what Microsoft has in store for me next. Maybe Visual C#? Hmmm... I won't touch anything non-Microsoft with a ten foot pole, because Microsoft always comes out with the best cool shit and I'm a big fan.
I don't know why you people can't just accept Microsoft and all its products and move on with life.
at this point, you cringe in fear of two problems, the spaghetti mess that you are about to deploy, the ongoing maintenance nightmare and the horrors of modifying it to fit your needs. Well this book isn't going to solve these issues
I though this was the answer to my prears...
At this point, you cringe in fear of two problems, the spaghetti mess that you are about to deploy, the ongoing maintenance nightmare and the horrors of modifying it to fit your needs.
There are three types of people in the world: those who can count, and those who can't.
As a programmer who many years ago swore blind that there was no reason for using classes and objects on website
I put together a javascript/php-based web aministration tool for a web site, that without classes, would have been a nightmare. Classes aren't necessary in every case, but when the problem space reaches a certain level of complexity, NOT using them can be a very poor choice. But then, after one decides that classes would be appropriate, using them effectively is a whole different ball game.
I think OOP speeds development (it certainly speeds changing and expanding existing code) so you could say that you "by the time you've written everything using a procedural approach you probably have finished and be wating for the next client with OOP..."
People seem to be more concernded with development speed on the web (most web languages are interpreted, which speeds development at a massive expense of runtime speed) so OOP is natural for web languages.
in 24 hours
There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
How does this one compare to the SAMS book?
I used this one to get going, and found it very useful. Does anyone know if the book reviewed here
presents any significant benefits over the book I mentioned?
... Web Database Applications with PHP and MySQL, from O'Reilly. It not have the same focus as this book, but will give also a lot of useful concepts.
My biggest gripe about PHP in regards to classes is that you CANNOT create a deconstructor function in your classes. Their reasoning is that they cannot make it where you know which order the deconstructors will be called.
Instead, the workaround is to create a function to handle the script ending using register_shutdown_function(). This is incredibly annoying, and for the most part I don't even use it. It just forces me to write a function called ClosePage or something to that effect.
I like classes, and it's worth at least looking into using them on your pages (at least for code you'll be constantly reusing). For those of you who are concerned about speed in using classes, get PHPA.
Hopefully PHP5 will fix some of the issues in using classes in this language. But until then, be hesitant.
/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i
Yes, this is flamebait. Which is best? I don't know and would appreciate any insights.
It's $34.99 at amazon with free shipping. ($39.99 at bn)
There's also a $5 off $35 coupon floating around...
hooray! it's a sex wiki
Ever started a sentence.
. . . and then forgot to end it?
The example code is contrived and ignores a lot of real world problems. Of course, if you're writing a shopping cart of your own, you won't learn anything new here. If you don't know php and want to add some dynamic content to your web pages, it's a good book, though.
Do you even lift?
These aren't the 'roids you're looking for.
"Ok, It's not for everyone. If you've done any Java or C++, this book is going to be a bit below you"
Does this make me 1337?
To those familiar with it, #5 obviously is:
In Soviet Russia, Jesus asks: "What Would You Do?"
Part of the reason it applies so readily to this language, however, is the conceived ease-of-use. A lot of newbie users swap to PHP, pick up some bad samples, combine with existing bad habits they never grow out of, and eventually consider themselves "knowledgable" just to to long-term use. However, experience in duration != experience in education (standardization, etc).
To shift the blame from PHP, I've been working on attempting to integrate a 3rd-party web-based system (Perl-base) into my place of work. At first, I looked at the code and estimated that I could do it relatively easily. What I neglected to realize, is that while some of the coding was done reasonably well... this seems to be a multi-person project and other sections are nightmarishly and un-necessarily complex.
We need an article on "signs that you're working with bad code." So far I've found...
- Poor indentation
- Low commentation (for godsakes, use # and throw in at least a few words every now and then
- Really ambiguous variable names: $x1, $x2, $blah, $stuff
- Odd information passing: As a delimited string...which is interpreted differently based on certain conditions (contents of string may vary)
Maybe we need a "warning signs" section. Anyone got one?I found the same book at $27.99... :-)
There seems to be a few other places with free shipping..
Book even cheeper..
It has been -390 seconds since you last had forbidden thoughts about cowboykneel
JSP I know nothing of, so I will not comment on it here. RE: PHP and ASP, unless you want to spend a huge amount of money that doesn't really have to be spent and lock yourself into the Microsoft Way, avoid ASP at all costs. PHP in combination with one of many fine open source databases (I'm fond of MYSQL, but these are other good options out there) is free, non-proprietary, and easy to work with. All you need is an old Linux box, a text editor (emacs for me, but pick your own flavor), and a week's worth of evenings to study and you'll be ready to rock, even if you're like me and are not an uberhacker by any stretch of the imagination. For MYSQL, a copy of PHPMyAdmin is useful too, as it makes administering your database a LOT easier.
Don't Panic!
Before I begin, let me just clarify something. I'm not arguing that PHP is better than Perl in all cases. There is certainly still a use for Perl. Also, PHP isn't perfect but it does manage to fix many of the shortcomings I've had with Perl. Here are a few of the things I've noticed about PHP. Finally, I'm not the most talented Perl programmer out there. I generally prefer to use the vastly superior Python, but can use Perl if I have to.
- Ease of use. After about a day I had an excellent understanding of
both PHP and SQL. I was able to get a stable, useable and presentable
website up within 24 hours of reading the basics of PHP. Learning Perl
took me weeks and I'm still not even as good with it as I am with PHP.
I would definitely not recommend anyone new to programming begin with
Perl.
-
The OO of PHP is excellent. In my experience, it rivals Smalltalk.
We all know that Perl's OO still needs work (whether or not OO is all
that great is another discussion.) Hopefully Perl will be patched up
so it supports such must-have OO features like introspection,
reflection, self-replication and ontological data-points.
-
Outstanding database support. PHP supports virtually every DB under
the sun (although Berkeley DB is missing, oddly enough.) Perl seems
limited to MySQL and PostgreSQL, and its really a kludge for the
later. I've heard that this will be fixed in upcoming versions of Perl
though.
- Speed. PHP is one of the fastest languages I've ever used. While it
won't be replacing assembly or C, its definitely faster than Perl in
almost every case, particularly in regex which has long been Perl's
strongest point. I'm sure there are cases where Perl is equal to PHP,
but I can't think of any at the moment.
- Portability. I can take PHP code off my Linux box and plop it onto
an IIS server, or even one of those new Macintosh servers and have it
run without having to change a single line of code. Try doing this
with Perl! Its as though it was written in assembly, Perl requires
that much rewriting.
- Graphics. PHP comes with a nice little graphics library. While I
wouldn't use its to code the new Doom (VB would be a better choice)
its adequate for most web pages, and should be considered as a
substitute for Flash for certain things. Perl lacks a graphics library
of any kind.
- Data Structures. Under PHP you can create any type of datastructure
you need: Linked lists, binary trees, hash tables, queues, inverse
Reiser-biased recursion trees, etc. Under Perl you're extremely
limited in what you can do. This is because Perl isn't OO (so you
can't create Node classes, for example, usefull in a linked list) and
because it lacks pointers. Some of you may notice that PHP lacks
pointers, but look deeper! Behind the scenes, hidden from the user
pointers are used. Because of this, PHP can support complex data
structures.
Again this is just my experience. I don't mean to offend any Perl coders because Perl was an excellent language. However, in certain cases it may behoove one to write the back end in PHP instead of Perl.I take exception to this. Open source flourishes at all levels; the inexperienced, the intermediate, and certainly at the expert level. In fact, it is the progression of people from distributing code to distributing useful code that makes open source what it is.
The day you can't download garbage code is the day open source dies.
I tend to use a hybrid approach. There are many things that are fast and easy using proceedural programming, and I would think that probably 90% of the programming I do is proceedural. Many of my prjects are entirely proceedural, and the rest usually have their core written proceedurally.
;-)
That being said-- there are several reasons why I might use classes and objects:
1) Complex data types being moved around. I often use them like structs.
2) Sometimes extremely complex and recursive data structures benefit from having functions attached to them. For exmaple if I am generating a PDF from a database query and I want this to be extremely extensible, there is no substitute for OO in its elegence.
3) SOAP integration is FAR easier with OO programming. If your application needs SOAP, I suggest using OO for every SOAP-related object.
4) Sometimes I use objects to hide ideosyncrecies from the program. Usually, the program is not aware that this is an object, however.
Bad things about OO:
1) For most tasks, OO is sort of like slicing a loaf of bread with a table saw. It is unnecessarily complicated and wasteful (performance hit).
To recap, I find that OO is useful with complex data interactions, wrapping non-standard behavior (making PostgreSQL's record set appear forward-only for example), and for SOAP integration. But I wouldn't use it just because someone says its cool
LedgerSMB: Open source Accounting/ERP
There are several promising PHP frameworks in development.
Ports of Struts
PHP.MVC
Phrame
And ezPublish 3 which is primarily a CMS but can also be used as a general purpose framework.
IMHO for one of these to really take off (like Struts) is what professional PHP development needs.
How to develop phpNuke!
Yeah, I work with a bunch of people with college degrees in MIS. Hmmm, let's see, we've managed to build 3 f**ked commerce applications in 4 years. I think the key ingredients you're looking for is EXPERIENCE and HUMILITY.
Time for this longtime "OO troll" to step in here. While I think OOP might contribute minor improvements for components with simple, stable interfaces (a relatively thing), it is no magic bullet by any stretch. I have not seen the alleged "proof" in this book, but most other cases of "proof" I have seen had warped reasoning, especially about how things tend to change over time.
The world's patterns of change tend not to be hierarchical nor polymorphic. These "taxonomies" are artificial structures introduced by OO authors, but there is usually no "tree cop" or "polymorphism cop" in the real world that assures that new changes fit the shape of these concepts. Change is more random in my observation than OO proponents assume. Marketers and bosses that ask for new features don't care about the shape of OO when they invent requests. OO books present an artificial view of change patterns, and students take it as gospel. We need more science and less doctrine. To build good, lasting software, one has to first become a student of change. The change patterns I have observed so far do not fit OO for the most part.
OOP Criticism Website
Table-ized A.I.
I've spent on the order of tens of hours just trying to get PHP, MySQL and Apache to play friendly together with no success. I've decided that when someone creates a PHP, MySQL, Apache integrated distribution, then I'll return to trying it out. Until then, I'll stick to Apache + Perl or Tomcat.... It makes building a KnowledgeBase app much more difficult though!
Correction: "(a relatively thing)" should be "(a relatively rare thing)"
Table-ized A.I.
I second that!
Specifically, can anyone compare the design paradigms presented in the books? Is one better? Why?
See for yourself and please mod down this stupidity.
The astonishing thing is that it continues to work!
Congratulations! Now we are the Evil Empire
One way to help structure your PHP application would be to use Fusebox, an open standard that encourages separation of logic from data (from a DB for example) and presentation (HTML).
:)
I have used Fusebox with several Cold Fusion applications and have that it with FuseDoc are a great combination for creating a webapps in a standard fashion. It allows new developers who are familar with the Fusebox structure to pick up on your design quickly and implement their assigned pieces in a more reusable manner. Here is a good tutorial on Fusebox with PHP. This site is another great Fusebox with PHP resource.
A ColdFusion, Java, and PHP developer's weblog might also be helpful. (Disclaimer this is my weblog!
I want to pipe in and second this view. A big gripe of mine is how arbitrary OO, classes can be on how they are organized. It feels like "another level" of abstraction based upon what the programmer felt constituted an object at the time. I have yet to find an OO PHP application that could not be just as easily implemented with includes, functions, and arrays.
Damnit, I don't know which is worse. Trolls or incompetent moderators.
A big gripe of mine is how arbitrary OO, classes can be on how they are organized. It feels like "another level" of abstraction based upon what the programmer felt constituted an object at the time.
Amen! One of the techniques I try to apply is "virtual abstraction" (AKA "local abstraction", "temporary abstraction", "ad-hoc abstraction) using relational queries and other techniques. Philosophers have generally concluded that there is no such thing as universal (global) taxonomies and abstractions. Too many OO designs *do* assume that their global abstraction is appropriate. One abstraction does not fit all.
Too many global variables are a bad thing, most would agree. Similarly, global abstractions and taxonomies are often a poor design for related reasons.
Table-ized A.I.
ouch, I've been hit by a reference - again!
it's not funny. I spent hours today because of PHPs whimpy OO implementation.
Checked out the shopping cart feature first, since I've coded a ton of shopping carts.
TERRIBLE!
I type in 9999999 (ad infinitum) in the quantity field and hit update.
My quantity is mysteriously changed to 147483647. I'm just guessing that's the limit of signed ints on that server. No error message was displayed. Since the size of the field that displays the quantity box is 3, all you see is '214'. An end user of an e-comm site doesn't care what's behind the scenes, they care that the inputs/outputs make sense. This doesn't. The reviewer talked about Design Patterns. Who cares? On the web the first rule you need to follow to have a reliable application is 'Validate user data'. Do that obsessively and you'll probably be ok even if your back end isn't too slick. Fail to do that and you are sunk, no matter how efficient your code is.
Then just to be sure I wasn't being too harsh, I ordered -3 of another movie. Works fine. So you can order three of one movie, -3 of another, and get them for free. Sorry.... a shopping cart without data validation (tedious as it is) isn't a shopping cart.
I hit continue and am told I need to have an account first. I sign up for one. First thing - I'm prompted for my login. Grrr... pet peeve - maintain this in the session please. Then I'm not redirected back to the cart. Oops... lost sale there. So I continue.... lovely, I'm informed that "Error_ Your shipping info is not valid." Man... insulting too. I hate apps that set a user up to fail.... and this does. I update my shipping address as prompted... and nothing happens, I don't go back to the flow of purchasing. Yikes, another lost sale. Even on the last step, my -19.99 order is accepted with no problems.
I know the shopping cart is being offered as an example only.... but c'mon, it should be a workable example. I am looking to learn PHP, but think I'll look elsewhere.
"I've working in MIS for 25 years. I have a high school education and a brain."
Well, I don't doubt the high school education part....
If I'm calling a function, I should be explicit about what I'm passing in and what I'm returning. Using GLOBAL in functions should not be done. Can you give me examples of what you'd need to globalize in a function (or method)?....
There are a couple times I've had to do that, which pretty much just drove home the fact that the app wasn't architected properly in the first place.
First off, it is not really "global" scope, but "regional" scope that is sought. (Session vars would be the closest to true globals.)
While I agree that fully "clean" code should probably have explicit interfaces to regional info, in practice it can be a lot of work to rearrange everything. Having a regional scope could save a lot of code rework when in a hurry.
Plus, I notice that a lot of the stuff that routines share is very similar. I cannot find a way to factor that similarity out without having regional scope or goofy arrays. IOW, the "global" declarations are duplicated too often, and duplication is not a good thing in many cases. It smells of a language flaw.
PHP's scoping rules seem to want to force a certain style on you without asking.
Table-ized A.I.
I have a message board system Im currently developing in php. Let me know what you think, and/or if you have any suggestions. thanks. The URL: www.webula.net -Josh PS- support for this project is appreciated. Email me at josh at webula dot net
www.cgisecurity.com/lib
Why do you feel better getting that piece of data from $someObject->getX() than you do when the data is retrieved from the getX() function in an include file? Functions and includes allow you to have the same modularity as OO programming. Modularity is a design consideration and can be implemented with procedural proframming as well as it can with OO programming.
It all depends on what your needs are what is appropriate. For most sites, putting everything in objects is overkill. I worked on a site that had 42 COM objects to manage the site, about 35 to manage the shopping cart. Complete crap, very confusing. Not the fault of OO, just bad programming. A well designed procedural system is better than a mediocre OO system any day. And, IMHO, a well-designed procedural system is better than a well-designed OO system almost any day too, for the performance if nothing else.
There is always a place for modularity - that's not the same as OO.
While on the topic of corrections, you probably meant "anti-OO troll" instead of "OO troll"
This is anecdotal, not evidence. Most studies of the issue show gains in capability with OO only after several years, it's just become accepted as 'better' as a religious belief. Well documented, modular code is all you need for quick modification of existing code.
Maybe you work at a shop that did a big push for quality, and incorporated modularity and good documentation in with the conversion to OO? Speed of development is definitely the biggest thing in the web, and with my standard include libraries I can crank out pages just as fast as you can with your standard objects, but I think it's a lot easier to develop new libraries than it is to develop new objects.
the html tags would be a piss poor example of an object.
a good example of an object would be 'customer', 'order', 'account', 'product', etc.
there's a performance hit to instantiate an object. why do so when simple client or (as a second line of defense) server side scripting can do the validation you're talking about? With Visual Interdev Microsoft tried to do the kind of thing you're talking about, having HTML fields generated by programming code, and it was a complete waste of time. HTML works, just use it directly, no fancy interface needed.
Tablizer, you're doing a great job presenting this viewpoint. So often the arguments I hear for object oriented are really just arguments for good procedural practice.
Then I'd throw poop at your abstraction.
Being a chimpanzee, I wouldn't realize I couldn't hit an abstraction, so I'd probably continue like this for 3 or 4 hours.
Excellent rules. Based on experience *alone*, I agree with all of them. Evidence of more than one is a sign to run screaming back to a nice safe position in tech support.
Here are a few more, about as fatal:
1) Lots and lots of global variables. Any attempt to modify or replace any of them will lead to catastrophic failure. Needless to say, none of this is documented. Anywhere.
2) Functions with more than three or four parameters. Be especially wary of functions that interpret their parameters in different ways, and do several different things, based on the value of a certain parameter. See several of the Windows API routines for good examples.
3) Lots and lots of copy-and-pasted code. Each of the pastings will be identical, with the possible exception of a single variable name.
4) Homebrew schemes to do features that the language provides. Examples: New and exciting implementations of objects, vtables, strings, sorts, etc.
5) printf() or print() (or println()) statements for debug output strewn around everywhere. Double bonus points for having no scheme whatsoever for turning debug mode on or off, other than commenting each statement out.
6) Cutesey variable names. Examples: $Gandalf, int chewbacca, anything named after the programmer's girlfriend.
7) Any function of more than 200 lines.
8) Switch statements with more than 30 or so lines. Often a direct cause of 7).
9) Modules with more than 1000 lines of code. See 7) and 8).
10) All sorts of tight coupling between modules. Want to call foo()? You'd better link in bar, baz, blarf, yadayada, and about 25 others. Need a fred struct? You're gonna need an ethel, lucy, ricky, and littleRicky as well.
11) #include "global.h". Change one thing. Compile for 5 hours. Say no more.
12) Hardcoded stings. Everywhere.
A lot of these are direct consequences of a design that evolved over time, as opposed to having been designed in the first place. This is especially common in projects that started off with the programmers banging out code right after the first project meeting, instead of actually working it out on paper or a whiteboard beforehand.
What if life is just a side effect of some other process and God has no idea we exist?
Dumb shit you will see in other people's code but shouldn't do.
Sounds like a good additional chapter to me, but the name might be a bit long...
Along with Codebehind, ADO.NET is fantastic with ASP.NET, and a major improvement over ADO or ODBC connectors.
You have every .NET enabled language at your disposal, and they solved a major ASP problem with IsPostBack. I've done Web Applications in PHP and JSP, and while they are both fine, ASP.NET}s the easiest to learn and the most powerful. If it makes it out to other platforms, it will easily own the space.
I love PHP. I use it every day to write custom web-enabled applications. It is a great Perl replacement (flame on) for those little apps you need to write when you grew up on a pseudo-OOP language like C++ or Borland Pascal 5.5 w/OOP. Some of us grew up on languages like that and PHP is just a very comfortable langauge to use.
The biggest problem I have with PHP is that it is always changing. Last week the fad was to use mysql_connect() style stuff to do your databasing, this week it is dbx_...(), next week, PEAR. No, wait, I'm a week behind already. The Perl folks figured out the mistakes they made with stuff like that a long time ago, and they mostly use DBI/DBD to do their database stuff. But the Apache folks didn't learn from their mistakes, and now we have n ways to do pretty much anything in PHP. Do I use the more abstracted string functions or do I use regexes?
The language is intentionally designed to make lots of people happy (shell/C/C++ style comments, ASP and HTML style script escapes, etc.). But there are no long-term best practices, and newer better ways to do this stuff come out each version. So how can a print book effectively keep up?
I find the online PHP docs quite good, and the public comments are great. I really don't understand so many people's need to buy a book when docs (and tutorials) are there for you on your screen. Kudos to the MySQL folks, for their online docs, too. It would be nice if you could find (maybe I didn't look hard enough) a snapshot of the MySQL manual from each revision.
My $.02.
[Shameless act of self-promotion]
;-) I've been working on for a couple of years now. The intention was to create a framework with which you can create all other forums. The fun thing about it is that I've used it to create all kinds of different (non-forum) websites with the framework. From a photo album to a telephone-cost-administration system. In my opinion it shows how you can write a good OO system and make good use of the features a scripting language can provide.
There is a web-forum (yeah, like so many others, but better of course
Please have a look:
AtomicBoard
Just for fun, couldn't someone write a "mod_perl and postgres" book? Though even that would be pretty redundant at this point... Or just for giggles, "JavaScript and SAPDB" or something? (Ok, come to think of it that might not be the best idea)
Sorry for the redundancy, but I just keep looking at these and thinking "WHY?" - there are only so many ways to build a bloody shopping cart, after all.
sic transit gloria mundi
Idontgetit
ASP.NET is easier than PHP? Are you high? At the company I currently work for the lead graphic designer picked up a book about PHP, worked on it for about 2 weeks and was able to become proficient enough to get himself moved into the lead web development position. Now the company want's to move to a .NET environment (they've been working on it for 3 or 4 months now) and believe me, if it wasn't for the money going out the window to pay for the consultants, this project would be going nowhere as the skill set is just not there.
programmer or language, hmm, tough call!
;
:
n ernum.jpg", 'alt'=>'banner'));
int main(int argc, char* argv) {
printf("Content-type: text/html");
printf("");
printf("<html>");
printf("<head>");
printf("<title>CGI in 24 hours</title>");
printf("</head>");
printf("<body>_insert_body_text_</body>")
printf("</html>");
}
PHP has a bad rep because most people look at it from the wrong end, the "Learn PHP in 15 minutes" end.
my code looks more like this
<?
require_once 'html.class';
class this_page extends html {
function add_banner($banner_num) {
$this->insert_img(array('src'=>"/mages/banner$ban
}
}
$p = new this_page(array('title'=>'blank page with an image'));
echo $p->get_as_html();
?>
Which will produce a clean, tidy & valid html page.
Mind you I've been programming in PHP since version 3 (for my sins). PHP has come a long way since then. I like using it but I feel a bit trapped in it. I'm trapped by my projects, converting them to another language is just too much hassle when the only shortcoming is that they are in PHP. The risk outweighs the benefit of changing.
There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
I've just started a project for a client who wants PHP. Not used the language before, although I am a competant Perl programmer. It was easy enough to pick up, but damn, it sucks ass!
Firstly, not only is it extremely forgiving of sloppy coding styles, it's design even seems to encourage it. It's typing logic is a pain - variables get assigned a type implicitly, and then you have to use functions to test what type they are. In fact, there's a function for just about everything. No, they aren't arranged sensibly and hierarchically into packages. They're all dumped straight into the global scope.
And while we're on the subject can someone please tell the PHP developers that global variables are a BAD THING? They are way overused in the language. You have to totally rely on them.
I could go on all day... PHP may be fast, it may be powerful, but it encourages some of the lamest code this side of mars. Doing it "the right way" in PHP is a real effort.
Web Development for a Programmer, is a pretty simple task. If someone comes to Programming(essentially what ASP.NET entails)from a Web Development only background, things will appear much more complicated.
Consider it like the difference between a Web Site, and a Web APPLICATION. Web Sites require little if any real programming, where a Web Application will require a significantly greater skill set.
What I am saying, is that for trained Programmers, ASP.NET is the easiest way to build pretty powerful web applications.
Fair enough?
QUICK INSTALL (Static)
./configure ..
./configure --with-mysql --with-apache=../apache_1.3.x
../apache_1.3.x ./configure --prefix=/www --activate-module=src/modules/php4/libphp4.a ../php-4.x.y /usr/local/lib/php.ini /usr/local/lib/php.ini file to set PHP options. .php
$ gunzip -c apache_1.3.x.tar.gz | tar xf -
$ cd apache_1.3.x
$
$ cd
$ gunzip -c php-4.x.y.tar.gz | tar xf -
$ cd php-4.x.y
$
$ make
$ make install
$ cd
$
(The above line is correct! Yes, we know libphp4.a does not exist at this stage. It isn't supposed to. It will be created.)
$ make
(you should now have an httpd binary which you can copy to your Apache bin dir if it is your first install then you need to "make install" as well)
$ cd
$ cp php.ini-dist
You can edit
Edit your httpd.conf or srm.conf file and add:
AddType application/x-httpd-php
I've installed PHP on a number of machines (PCs, Sparcs, SGIs) running a variety of Linux distros and this process has always worked. Have you been following this, and if so what has been going wrong?