It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 12 years ago.
Back in the 90's I used to develop websites using Cold Fusion. We also still used tables for most of our page layout, hehe.
I just started getting back into website development again seriously. I'm getting a pretty good handle on the basics with CSS and starting to add Javascript. I'm guessing that I will eventually add PHP as a modern replacement to my CF skills.
Right now I am using an old copy of Cold Fusion studio for my editor and of course Photoshop for my graphics. I have also discovered Firebug and found it to be very helpful.
I was wondering if the community here could give me some pointers as I start back out in this field. Do you have any software suggestions? A new editor I should use? Other debugging tools? Languages you would recommend?
Any comments or ideas that would help a website developer who is starting out would be greatly appreciated. Thanx!
You might consider Eclipse for your IDE. It's free, open source and pretty full-featured. Also, you'll want to implement source control. I like Subversion, which integrates nicely with Eclipse.
If you're looking to update your image editor and you don't want to spring for Photoshop's licensing fee, GIMP is very much improved, open-source and free.
You may want to investigate the various CMSs and frameworks out there. It's possible that one or another may suit your target market. And they can speed up development significantly once you learn their quirks.
Also: JQuery. Don't spend your javascript coding time dealing with cross-browser issues and common tropes.
I would look at Net Tuts+, Think Vitamin, and Smashing Magazine to get back up to speed on what's fresh.
You definitely want to look into a framework. You'll be disappointed with PHP out of the box if coming from ColdFusion, it's not nearly as friendly. This is assuming you're going to use it for database applications, otherwise it really doesn't matter.
Of course, I'm obligated to tell you to check out Ruby on Rails.
I'm a big fan of jQuery for elegant, client side cross-browser javascript.
If you want to look at some "modern" concepts on the server side, REST is getting some airplay, and cloud stuff like Google App Engine can make for a really efficient development path (scalability 'for free').
But I still stick with the old-school IDE - syntax highlighting text editor. Or eclipse, which sometimes isn't much better ;)
I agree with finding a framework. As a general editor, I can't live without notepad++ - http://notepad-plus-plus.org/
It is a text editor, but it does so much. It has code highlighting for many languages - it is an indispensable tool for me.
For CSS I would recommend reading CSS Mastery for a nice overview including browser differences / bugs.
As far as the software is concerned, I still use Dreamweaver for my old, template based sites, but I´m moving to NetBeans for my new sites. Apart from all the expected features, NetBeans has nice ftp integration, one of the reasons I started using Dreamweaver years ago.
The Opera Web Standards Curriculum is a great (re)start for writing correct HTML and CSS and JS. Read it at your own rythm (I mean pace, sorry for my english).
IE6:
Just give up with IE6 if you can (if your clients don't ask specifically for its support). It'll give you plenty of time to learn better things.
If you work for administrations or companies that work for them, that won't be the case; prepare for severe headaches.
Position is everything is a great resource. Don't try to understand everything but at least learn to know and recognize those IE6 bugs. A doubled margin, 3px margin, content seen twice, disappearing content are very well known and documented bugs but if you don't know here they come from ...
Conditional comments and hasLayout (zoom: 1; in one instruction) have been better explained elsewhere I believe, because P.I.E. is really an old site (though still useful).
Page layout:
If you have used tables, spacer.gif and are new to web standards like CSS 2.1 used the right way, you'll have a hard time for layouts displaying correctly cross-browser even if you know hot to style entire blocks in the page.
Don't bother to reinvent the wheel, use resources like HTML Gala. Pick up the layout you need depending on fluid/fixed width, number of columns and whether their width is fixed or not and whether there is a footer or not, then understand how/why they did it but don't try to do it from scratch: it's just too complicated when you start to use CSS.
Tools:
a good text editor
Firefox and great extensions
and you're done. Quite :)
Chrome also has extensions, keep an eye on it in a few months. For now nearly everything needed by a webdesigner/webdeveloper exists on Firefox and some of them on other browsers too.
Firebug that you already cited. Explore its tabs, its select boxes and breadcrumbs, where you can edit things live, etc. And I heard you like extensions so dev created extensions for this extension (meme ©Xzibit :)), check for extensions to Firebug. I use Pixelperfect and CSS Usage mainly but others are useful too.
Web Developer Toolbar is the other must have extension. Be sure to try every option at least once, there's even a gem in the last menu, first option that only a few know.
QuickJava allows quick enable and disable of Java, Javascript, Flash, Silverlight and Images from the Statusbar without having to open any dialogs.
MeasureIt to measure width and height of an element or margins.
ColorZilla brings a color picker (Shift-Esc)
Fireshot for snapshots and commenting them, useful if you want to communicate with a client or a designer, write documentation or for your portfolio.
Others
source control (let's avoid the pain of "It worked 3 days ago/I just deleted the wrong file aaargh")
two offline backups that won't get robbed/flooded/burnt with the rest of your house/office. The second one can be an USB key/HD with Truecrypt given to family or friends, along with a password only known from your wife/husband and your parents or children for example. You can keep the first one with you (encrypted is better if you get robbed).
CMS: you can test Drupal, Joomla and Wordpress as a beginning. Magento for e-commerce. Numerous plugins for each one but their quality may vary!
I'd look at Net Beans as an editor/IDE if you definitely want to go the PHP route.
I'm a .NET developer, so maybe i'm biased but i'd look into the .NET framework, and specifically ASP.Net MVC (go for c# if you can in my opinion)
It all depends on what you want to do in the longer term, and if you want to do this just as a hobby or to work as a full time developer.
In the area of the UK i'm in it's a bit harder to find PHP jobs in the larger companies, many are tied in with Microsoft and rely on their technologies such as .NET and MS SQL etc.
Are you looking at taking on more of a design role, css/xhtml coding, or writing applications, web services etc?
Note, just to clarify I also use PHP for many projects outside of full time employment, you can make a living using most technologies, so go with the ones you prefer.
Also check out Tizag for loads of useful, easy to follow tutorials that can quickly get you up to speed on the basics.
Whichever route you go down, definitely get familiar with the jQuery javascript library, it's very powerful and many of the basic functions it makes available are expected in websites these days by clients i've found lately.
I've not looked at it myself yet, but the new PhpStorm IDE seems to be getting a lot of praise at the moment
Futher to the nettuts+ answer.
If you're on a mac, i can highly recommend panic's coda http://www.panic.com/coda. It makes writing css a breeze, even though i hand write mine. However if you're strapped for cash a free alternative to that is textmate http://macromates.com/
Firebug is a fantastic little tool, and there is also web developer toolbar https://addons.mozilla.org/en-US/firefox/addon/60/, which is also very very helpful! It has built in links for validating your html and css with w3c.
Languages, definitely PHP imo. I started out in ASP.NET, found it good but i just feel more comfortable in PHP, my suggestion for you is to try them all out and see what works best.
Also when you feel comfortable, take a look into the kohanaphp framework (kohanaphp.com/), its a fantasticly simple framework which as someone else put it, is unobtrusive, you can use as much or as little of it as you like.
Finally my best advice is to just spend every waking moment trying out new things, like making a html page and styling it, making a contact form that kinda thing, i found just messing around is the best way to learn a language.
Hope this helps you get started :)
ColdFusion has evolved nicely since the 90's, check out the details of version 9 before abandoning it. Also, consider CFBuilder for a nice IDE for ColdFusion.
ColdFusion 9
CFBuilder
here are some helpfull links.
css-tricks.com
net.tutsplus.com
ajaxian.com
webmonkey.com/category/javascript
smashingmagazine.com
(i visit them daily to be up to date with web Design / development).
I think there are two things that mark modern web development:
Web development frameworks
JS libraries, mainly jQuery
Although most of the concepts behind today's Web development is not new (MVC structure, AJAX...), re-discovering these led to a shift in how we do things, and brought back the trust of veteran developers in it as an effective and serious medium.
I definitely recommend that you dive into Ruby on Rails. Learn the main principals and concepts underlying the framework: reusable modules, elegant MVC structure, templating, RJS...
(Alternatively, you might like to check cakephp, the PHP cousin of Rails, which inherits most of the family traits)
Eventually, when you play enough time with it, come to like it and understand it well, you'll stumble upon other frameworks that might suit you more (for one reason or another). My experience moving from Rails to Django (Python), then to Google AppEngine (Python or Java) was nice and rewarding (in personal satisfaction, that is).
That's for the back-end.
Then you come to the vast world of ninja-style-ultra-useful-and-still-fun jQuery (and its numerous plugins) where the joys of web development continues.
Enjoy the ride!
Related
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
I just got done reading this thread...
https://stackoverflow.com/questions/588888/best-cms-for-a-corporate-web-presence
Which was the closest thing I could find on the web. I too am looking to redesign a website for a corporation. I am the marketing director, not a developer.
I have researched this subject in many places. I won't say everywhere. I have read:
http://sunlightlabs.com/blog/2009/content-management-systems-just-dont-work/ and
http://www.webdesignish.com/the-best-web-development-frameworks.html
and dabbled at www.cmsmatrix.org and www.bestwebframeworks.com under the PHP area. I have read at least a few dozen articles from various places, some of them including the providers websites or forums.
I have read nearly as much as I can in the time I gave myself.. so with a little knowledge on all these areas I want to reach out to a community that has more experience.
Background: Manufacturer website, one location, no branches. One marketing/IT guy. Utilizes dreamweaver for all web editing needs. Knows ultra-basic html only for text and image placement and editing. I need to be pointed in the direction of a cost-effective design solution with either a framework or combination thereof, or a CMS that can give me what I need. The best example of what I want the site to look like would be a cross between tripplite dot com and logitech dot com, with some elements from a site like sonicwall dot com. I need an animated menu system but with images, so size customization is necessary. Simple animations for rollovers and click reactions so that users can tell when they have selected something. Page content does not change often, with most edits being to PDF documents. At present, I name all major documents (such as a 2011 catalog) with the same filename, and simply replace the document with the latest version via FTP. Nearly every other page will be a static page with static text and images. I might request polish on all other pages after the development is complete. Our site might end up being somewhere around 50 pages after this redesign.
It has been suggested to me to have the site designed in Wordpress by a pro, but everything I HAD read before reading the first-mentioned thread posted here said that I shouldnt use it because of content and bug issues. I believe that wordpress can provide a robust and feature rich corporate website that isn't just another blog or news site... I have seen a few examples like networksolutions dot com.
Project 1 is a redesign and new look. Project 2-9 goes through a parts library with thumbnails, build-to-quote system similar to a shopping cart but with no payments (and no PCI compliance), an e-page flip type catalog revision, and login portals with per user/entity content such as order history, order documentation/records and open-order production status and shipping information. We want it all. But where to go?
I have so far looked at for a CMS:
Wordpress, Drupal, Radiant CMS, concrete5 (and spoke with Franz a tad), and synType CMS.
To go the framework route with PHP:
yii, codeigniter, akelos, symfony, prado, cakephp and solarphp
The other ones I have heard many developers praising were jquery, dojo and django but im not sure yet if they are utilized in any other solutions that I listed.
Tomorrow I will be going through the definitions and such at bestwebframeworks to better learn about the once I had chosen and pit them against one another.
I would really appreciate any help in evaluating which platform would best suit me based on the information that I have provided above. Feel free to ask any other questions that may help narrow the list.
Thank you all in advance.
Before determining how to proceed, you need to as a few important questions -
Is your company in business to make money?
Do you ever expect potential customers to view your website?
Are you a trained designer with experience in usability and best practices?
Can you write maintainable, scalable, and standards compliant code?
Chances are, you should seriously consider hiring a professional for the job. A business website is often the first point of contact with a potential client and first impressions are hard to fix. If your site looks like your 8th grade nephew designed it with a full plate of mystery meat navigation and cross browser compatibility issues, you are likely going to lose clients before you even get a chance to talk to them.
There are likely a multitude of additional features and functions that your website could perform if you knew about them. A reputable professional would be able to assess the needs of your business and recommend website functionality to match. As they say, you don't know what you don't know.
My recommendation would be to beg and plead for a budget to get a website built by someone who knows what they are doing. A well built website will have tremendous ROI and pay for itself easily.
It looks like your needs are primarily front-end, I would recommend a JavaScript framework, like ExtJS or jQuery, I really like ExtJS. Then you could pair it up with some kind of python, ruby, php CMS back-end. Right now I am developing my website www.coffeedig.com (currently still in development) in ExtJS with a Django back-end. I picked ExtJS cause I have a lot of experience in it. I picked Django even though I had very little experience in python but python seemed like the best language to me. I all depends on your needs and your developers skills/experience though. Locally at my work we have about 3 to 1 ratio of developers to architects. It takes a lot of time to maintain and develop a CMS from scratch. So I would recommended against that. I wish I knew more on how large your development team was but personally I would give them a list and have them try the frameworks out and see what feels right to them. Also documentation and community support are two very important things.
Oh. I can see from your post your are trying hard to find a proper solution for your needs.
Since you will probably not be implementing / deploying the solution yourself, I can assure you that whatever option you choose, it is the developpers putting together the project that will make the difference. You can have competent developpers on your team, but if they have to use a tool they are not familiar with, the result may be deceiving.
The choice you need to make from what I read in your post is if you want to use a framework, where developpers will be implementing from the ground-up, or using a pre-built application ready made for content management (CMS) that can be tailored to your needs.
All the popular languages offer a multitude of frameworks that have all been tried and tested.
PHP has Zend Framework, Drupal, Symfony, and many, many more.
Python has Rails, Zope, Pylon, Django, etc.
All these could be viable choices, the main question is still, do you need an application with specific needs and business processes integrated that would be better suited with a framework to ease develppment, or do you simply need to have an easy way to show your products online and have an easy way to create and organise content? I suggest you not re-invent the wheel, if your needs are just for regular web-publishing, a content management system would reduce your costs.
Look around and search for demos of the solutions your are interested in, test-drive before you make a choice. And be sure to have a competent ressource available for the solution you choose, because in the end it is the developping teams competence with the product that will dictate the success of the result.
By the way, JQuery is a great library but is not what you are looking for, chances are it will be integrated in whatever platform / framework you choose! :)
My 2 cents, good-luck!
Frankly, it sounds to me that you have a mostly static website, with occasional PDF updates.
At the same time it doesn't sound like you have the skills to craft your web site by hand.
You also seem to have some familiarity with Dreamweaver, which a pretty scary powerful piece of software.
If it were me, I'd hire a solid Dreamweaver web designer that simply leverages DW for your site, and basically keep it static. With enough CSS and possibly JS work, the pages will remain static pages, and if you need to do minor updates, you're likely capable enough to do that on your own. Then simply sync up the site from your local copy.
The advantage of this is simplicity. Simplicity for you, simplicity for possibly future contractors, etc. If you're not planning on a lot of "interactive" features that require server side support, then keeping the site as static and simple as practical is a smart move.
Uploading a PDF takes simple training, not a CMS. And Dreamweaver should be more than capable front end to manage much of that for you.
Addenda:
I understand about your future plans, but those later phases are night and day beyond Phase 1. This first phase, this cosmetic and functional redesign, is essentially a marketing and branding phase. The skill set needed to implement it is quite different from Phases 2-9.
You can talk with your front end designer about the later phases, in terms of overall presentation, but the person implementing your front end will likely be quite different from the person implementing the back end.
Once you have finished with the Phase 1, the back end integration will be able to leverage the assets created when developing the later phases. None of this initial work will be "wasted". But you have the benefit of being able to move forward with your current toolset and releasing it early, while Phase 2+ are spec'd, developed, tested, and later deployed.
A CMS toolset, at this point in the process, is really a distraction.
In the end, the choice of toolset is really secondary to the person or team that you select to complete the other phases. It is good to be aware of the tool market, and the choices and their assorted advantages/disadvantages, but in the end what is going to matter most is the user interface that you as de facto maintainer are going to be interacting with day by day, and the ongoing maintenance of this system.
If you were buying a delivery truck, you no doubt would be selecting one based on a combination of how it fits your needs and overall cost of ownership versus shopping around to dealers "You know, I really like Volvos". You'll likely not care so much about how the engine works, or the truck is designed. As long as it starts and turns and stops like it's supposed to, with the costs you expected to pay, you'd likely be happy with it.
If you have a favorite, then fine. Likely whatever you pick isn't going to matter much in the end, assuming it's reasonably mainstream. If you don't have a favorite, then it's not particularly important. And if you don't have a favorite, it's not important at all for Phase 1.
But like a truck, it's more important to have a good mechanic. If you have a mechanic that likes Fords and is well experienced with them, you might want to seriously look at a Ford. Trucks are easy to find. Good mechanics, not so much.
Right now, Phase 1, it's about layout, color, and image. Things mechanics and programmers are notoriously bad at. Get this done now, with the right people, using tools you know since you have to support it short to mid-term.
Then look for some good people you trust to work with on the backend. They can use what you have done in Phase 1, and make it work with whatever tools they'll be using to do what, in the end, is most important to you.
Check out silverstripe, an amazing CMS probably better than most, most people just don't know about it. Amazingly easy to template and super easy to extend. It's also very powerful like unto Drupal. http://www.silverstripe.org/
Update:
Sorry guys didn't mean to make it seem like an ad. And no I am not affiliated with silverstripe I just really like it.
I am working on a (dating, social) website. Basically, it's database system in which registered users can search, update their own data, send messages to each other, upload photos. I am a noob in web programming. I am writting the code (html, css, php, sql queries) line by line. It was okay when I had only 3-4 pages (registration, profile update, search, contact list), but now it's getting more complex (15-20 pages) and I find it hard to keep track of functions, variables, css ids and so on. Moreover I am asked to add more features (user blogs, forums) soon that will make it even more complicated...
I would like to get some guidance from professionals to speed up the development process. I have a half-ready system with my own database tables, php files, functions. And I have some experience in coding. I work with Eclipse, but I use it only as a text editor.
So, what's next? What development tools would you use to code such a system?
Thanks.
I have some general advice that I think will help someone starting out in any programming field
Find other people doing the same kind of thing and talk to them about how they do it. They don't all have to be experts as you can still learn from other beginners, but don't only talk to beginners or you will just learn bad habits :)
Use other people's code wherever you can. Frameworks, libraries, examples you found online. If it is a framework or library that lots of people use then go ahead and use it however you like. If its an example you found on a blog or something then make sure you really understand what it does because a lot of the stuff out there is rubbish!
Eclipse is fine as a text editor, as are many others. Changing text editor will not make your code better or easier to manage. Having development tools that you like using can make the whole process much more pleasant but it is not as important as you might guess from reading around the 'net. Spending two weeks learning a new coding environment doesn't help you get your project under control.
Try to make sure you pass as much of the Joel Test as possible, even in a team of one. You should be able to answer yes to at least questions 1, 4, 5, 6, 7 and 10.
OOP and i would advice to take a look at other open source social websites/engines to see if,
1) migration possible (since yours is half-ready, according to you)
2) reuse their framework/ underlying models possible.
and since you will add more features to your existing one, i recommend you to take a look at below:
FYI
[1] Social Engine.Net http://www.socialengine.net/
[2] Social Network Engine Comparison (by Wiki)
As for coding IDE / development tools/techniques, you will increase your productivity if your environment is php integrated(on the fly function/method lookup).
I would strongly suggest using a PHP framework like Zend, Symphony etc. than simply writing PHP files. It will help you use something called an ORM for database queries which helps you port from different database servers like Oracle, MySQL etc. Apart from that, your question needs a very detailed answer. Try looking up some of the software development practices and tools that assist in them (e.g. trac, svn etc.) I have found these to help me be organized and stick to a schedule.
And how many users are you looking to serve ? Think about the scalability of your design.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
I have learned extremely basic PHP (I think so) using Lynda Tutorial. After that, I feel, I got some grip on that language. My ambition is to become a web developer! After some googling, I planned to learn some more advanced and practical php by using websites like PHPSCripts, Webapps etc..
But, now I'm in a confusion! After my studies, when I seek for a web developer position & got selected, how will I work, by just knowing some language basics?
Can you guys help me to become a good web developer, what will I have to learn & how to learn?
Also, can I get the steps to do a practical PHP project.
As a web developer it is important to have client and server side skills. But there are few web developers which are excellent at both... But knowing the basics and where to look for info is definitely a good starting point.
I would recommend to work through the following list(s) in the order presented. If you feel comfortable with a topic, move one. Even though that in reality you will often have to go back and forth during the learning process...
Client Side
HTML / XHTML
CSS
a JavaScript Library (e.g. jQuery, prototype/scriptaculos, etc.)
Server Side - Infrastructure
familiarize yourself with shell scripting if working on Linux (e.g. bash, etc.)
Webserver (e.g. Apache)
PHP Server
Databases (e.g. MySQL, PosgreSQL, etc.)
Server Side - Programming
PHP
SQL
Advanced Topics
After getting familiar with the basics...
AJAX (this is placed here because it is a client/server topic, not because it is advanced...)
Object Oriented Programming (OOP)
Security issues
Source Control Management (SCM) -> (e.g. git, etc.)
Model View Controller (MVC) software architecture
PHP Frameworks (Zend Framework, Symphony, CakePHP, Agavi)
Unit Testing (e.g. PHPUnit)
Object Relational Mapper (ORM) for PHP (doctrine, Propel)
Usually this keeps you busy for a while. At least it kept and still keeps me busy... ;)
Here are few suggestions:
Read these advanced/practical php articles on phpro.org
Learn the basics of OOP
Familiarize yourself with php frameworks and CMS
Familiarize yourself with HTML/CSS/Javascript
Try to make clones of other websites
Try to volunteer in open source projects, you may get started at:
openhatch
sourceforge
Im my opinion, A good webdeveloper MUST know:
HTML
CSS
JavaScript
After this, it's important to know:
Jquery
XHTML
Crossbrowsing (diferences of IE X Firefox x Chrome, etc)
Rationale:
HTML: it's the base of web.
CSS: in 2010, it's the base of web.
JavaScript: only the basic, to understand jquery after.
Jquery: you can solve a lot of problems quickly and it's large used.
XHTML: because your page may broke in modern browsers, if has a <br>, not a <br/>
Crossbrowsing: there is more than one browser in the world.
Just keep on practising. You will likely need solid HTML / CSS skills as well as PHP since the two go hand-in-hand - it's also useful to learn MySQL. Spend lots of time going through the tutorials on the excellent tizag.com as well as Lynda.
Once you're comfortable with all that and you're ready to move onto something more advanced, it's worth looking into Wordpress customisations and plugin development - that has the advantage of being pretty easy to use, with an awesome support community, and a whole bunch of mature code that you can look through yourself to get more familiar with how the language is used in the real world.
After that, try a framework like CodeIgniter or CakePHP - these are awesome for your productivity but do make sure you're comfortable with the basics first as the learning curve can be pretty steep and you want to reduce frustration as much as you can. :-) Learning design patterns will also be helpful at this stage.
One thing that will always be important to you, your users, your applications, and your potential employers is code security. I can't stress this enough. As soon as you put an application into real-world use, you have a moral and professional obligation to make that application secure. http://www.addedbytes.com/writing-secure-php/ <- read, digest, read other guides. Security is the single most important thing that a PHP developer can learn.
Above all, have fun! The best developers tend to be the ones that get genuine enjoyment out of what they're doing. You might find yourself eventually leaning in a different direction and using completely different technologies, so always keep your eyes open and be prepared to learn new things even if they don't necessarily 'fit' your current skillset. Also the more general knowledge you have about programming patterns, the better you will become in individual languages. Remember that it's an organic process so you will need to let it develop naturally - but help it along by exposing yourself to as much as possible (foreign language teachers call this 'immersion' :-) )
Regarding PHP
Make a small project using PHP, so you know that you know.
Learn a (MVC) framework like CakePHP or Agavi.
Read this SO answer.
Regarding Web Development in General
Know about CSS, XML, XHTML, XSLT, W3C validation, HTML5, JavaScript, AJAX (and most other acronyms you come across).
You will find there are various libraries which make your life easy, use them. And there will be one browser that will make your life difficult, but you will have do deal with it.
A solid web developer needs an understanding of HTML, CSS, JavaScript, and the server-side scripting language of her choice. But still more important is a solid foundation in programming. You don't have to be an expert computer scientist, but you need to understand how to structure a program and how to solve problems in a sensible way.
Most professional web development involves database access of some sort. Teach yourself SQL, and use a real SQL -- not Access -- for the effort. You can run MySQL or Postgres on a laptop these days, and it's free.
Learn to design databases well. Learn about normal forms, and indexes, and so forth. The time you spend on that will pay off in spades.
Take a while to study up on security. Look at the security bugs that have afflicted high-profile projects and sites. (Hint: they're pretty much mostly about trusting untrustworthy data, or else relying on old out-of-date infrastructure, but the consequences include site defacement and the compromise of valuable information.)
And then, take on a charity project somewhere. You won't get turned down, and you'll cut your teeth, so to speak. Just make sure you're not storing social security numbers or something crazy like that, because charity workers are often vulnerable to social engineering attacks.
the very very first thig to do is to learn Object Orientated Programming (if you haven't).. then you might want to start learning the MVC pattern... and then you must decide either you star using frameworks (like cakePHP, Symphony,Zend) or you prefer using CMS (like joomla or wordpress)... on the process you might also want to learn javascript using a framework (mootools, jquery or prototype)...
Edited: i forgot about databases and sql!! wow.. there's a lot to learn!
The only way to become a good programmer on a certain platform, is to study something more than just tutorials. Read a book, at least. Then the rest comes with practice.
A good way is to also learn a specific platform (depending on what they work with). Some work with Wordpress, so once you know basic PHP and how to use it with databases, and how to work with databases, you would be able to quickly make some basic information websites. Others use Joomla, Drupal, DLE, to quickly build websites, without having to hurt their heads with full backend and frontend architecture. If you need a more general approach, to be able to make more specific web applications, use frameworks like Zend, CakePHP, Symfony, CodeIgniter.
Also, besides knowledge of PHP, to build a small website by yourself, you will also need to know HTML, JavaScript (with AJAX, possibly a framework like jQuery), SQL.
And last but not least, you will need to learn how to protect the site against XSS, SQL Injection and other security threats.
Learn Object Orientated Programming (OOP for short).
Watching any programming tutorial is different than watching any movie. You need to have practice and have experiments form different angle of codes. Prentice and research is only way to get into the deep of any language. If you think you have well understanding about php then try to make some small application like phonebook which have database connection. After that you can move for any frame work like laravel, cakephp. But I always recommend to do at least one small project with raw php before move for any framework because when you come from raw php you will start loving working with frameworks otherwise you will may feel boring to learn again something new as my point of view.
It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 12 years ago.
I'm working on my first professional project. The fact is that I don't know which are the best tools to produce something serious (I'm talking about web-develop through PHP):
Are template engine like Smarty mandatory? Which one is "the best" (the most used, complete, documentated)
At the moment I'm developing on Notepad++ (mostly because I find it useful and complete) is there a better development tool? Or is just a matter of personal taste?
At the moment I'm studying JQuery and deepening my knowledge as regards CSS what other "mandatory" subjects can you suggest me?
This is what I can think of at the moment, have you any other suggestions?
Thank you.
EDIT: As someone made me notice the question is a bit ambiguous. I know the basics (HTTP protocol, Java Script, CSS, HTML, OOP theory and practice etc...). I'm studying computer science at the University (and the project I'm speaking of is my thesis). I need advise on how the "real world" works (outside my basement).
Don't focus on becoming a Professional PHP Programmer. Focus on becoming a professional web developer, and check out the What should a developer know before building a public web site? question.
Saying "I want to become a Professional PHP Programmer" is like saying "I want to be a professional painter" when you actually mean "I want to be a professional artist." Sure, at the end of the day both might paint and get paid for it, but what their customers expect of them is very different ;)
Specifically for PHP I'd recommend:
Learn a good framework. Depending on the size of the project, you can use Zend/Symfony or CodeIgniter/others for small ones. There are tons. I'd stick to Zend/Zymfony for something mid-sized and/or "real world".
In general these frameworks come with a basic template engine or you can plug in other ones like Smarty or Twig. I'd say it improves the code a lot. So, yes to your first question.
Also, notepad++ is amazing, but I recommend using an IDE if you're working on a project and not a simple 2,3 file script. I strongly recommend Netbeans. It has lots of teatures and it's really active. Check it out: http://netbeans.org/features/php/
Since you're coding in PHP, I'd say you get to know the SPL (Standard PHP Library): http://php.net/manual/en/book.spl.php
To sum up:
Strongly recommended to keep code clean and mainteinable.
Yes.Netbeans.
Yes. SPL, and a lot more I can't think of now.
A templating system like Smarty isn't mandatory, since PHP is technically a templating system. However, it's not a very good one. It's clumsy, very easy to make mistakes with, and you frequently end up with an incomprehensible mess.
There are better alternatives than Smarty out there. I'm kind of partial to Twig, myself.
Using a framework is pretty much mandatory these days. Development with a framework is generally much easier and quicker than using raw PHP, once you've got the hang of how it works. Code Igniter's pretty good, although minimal. CakePHP is quite good, although seems very heavyweight at times. Kohana, Symfony, and the Zend Framework are pretty highly regarded as well.
1 - The Smarty engine is very useful and probably the most popular in PHP application development.
2 - I use Aptana studio for PHP development. It's pretty complete and has nice tools coupled with it. It's based on the Eclipse IDE, so it's pretty customizable. The major drawback is that it uses a lot of resources.
3 - I recommend learning development patterns like MVC (Model - View - Controller) to get a good base of how data should be organized.
Also, look up Code Igniter, It's an amazing framework to work with (it uses the MVC pattern). Building something with it is really easy and very easily manageable. If you want simple tutorials, you can check on NetTuts for a serie of tutorials.
Agree with what Pekka is implying, which is that it's important to pick up another lang in addition to PHP. Please. Also, I can't see learning PHP without knowing stuff like Smarty. Notepad++, who cares there, each to his own. jQuery is fine though I might opt for plain vanilla Javascript before getting into a library. Even though jQuery makes things easier it abstracts a lot of stuff and what you really want is those Javascript mechanics.
I would also add a solid knowledge of the HTTP protocol as a must-have that some web devs seem to think is optional. You should know what a hard 404 is, and what content encodings are, and the different flavors of caching disposition, etc, etc, etc.
Above all, have fun!
Most web development includes some degree of database interaction, so good DB skills is always useful.
Basic normalization of tables.
Understanding Transactions
Knowing how to escape your values
before insert/update/etc
write selects with joins how to avoid
nesting database selects within code
loops
differences between database
and PHP dates (and how to work with
them)
etc
My standard recommendation in questions like this, in addition to the excellent suggestions given in the other answers already, is to at least dabble with a strongly typed language like Java, C++, Delphi or C#, with a merciless compiler enforcing discipline - proper declaration of variables, definition of complete class interfaces etc. etc. I love PHP, but it is very permissive and sometimes still shows its templating language roots, and tends to seduce newbies into bad practices. (That said, PHP nowadays is a fine language and it is well possible to write very high-quality software in it.)
However, you say in your update that you do Computer Science at University, so I guess you are already getting your helping of at least one other language, and CS theory, and your focus is indeed which frameworks to use etc.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I tried doing tutorials but it is unorganized and unstructured, where can I learn PHP from beginner to master? I'm looking for a site like www.w3chools.com, but somehow I feel it is incomplete, specially when it comes to more advanced functions.
I know some basics but I wouldn't be able to for example make a secure online webstore, and I seem to be stuck at this point, how / where should I proceed?
I started 7 years ago. In my personal experience, your road to programming will look something like this:
HTML -> CSS -> Javascript -> PHP/MySQL
[Insert other web script language
here] -> "Desktop Languages"
For HTML (and CSS), I started by using a graphical editor at (then freewebs.com) webs.com that allowed me to add code snippets. I used some random GeoCities site (may it rest in peace) to look up things. Now, use Google or Bing.
Then, I got Jeffrey Zeldman's book, Designing with Web Standards. I followed through the book, typing out the code in notepad. Try to understand what the code does.
Do yourself a favor, use Notepad++ or Programmer's Notepad. They support automatic tabbing for neater code. It will make you a better and more sane coder in the long run.
Another thing I used to do was look at people's code by right clicking in my browser and hitting "view source".
This only gets you the HTLM/CSS after the PHP has been run and the Javascript before it was run. Google Chrome is good for analyzing scripts because of the debugging capabilities. (Don't worry about that yet though.)
Javascript was an adventure back then. Now, we have jQuery. Start with that or a similar framework. This can be researched online. I have never bought a Javascript book. I do have an ancient one from Visual Quickstart that I used to learn what a method looks like. Beyond that, the particular book in question is
an outdated rag.
To learn PHP/MySQL you can get a book. The two languages are often put together so finding books that show you how to use them in tandem should be a snap. I used O'reilly books for PHP.
I don't like the online PHP reference so much, because when I'm testing I don't always have internet. I use a virtual server setup on my machine. Look into that when you are ready to start learning PHP and MySQL.
The last thing to remember is that web standards are always changing, but don't get too crazy about it. when I started, XHTML was all the rage and now everyone is talking about HTML5. I still use XHTML as do many others. It goes to show that things move at different paces for everyone.
Good luck, I hope I helped!
EDIT: Geoff Adams pretty much sums up my post - Play around the invest in books. And, it will take time. I'm till nowhere near perfect.
Getting to 'mastery' is going to take a lot of effort, time and work. You can't become an expert by simply reading tutorials - the best way is to learn by doing. Get to grips with the basics, then play around. Once you're more comfortable, invest in some books.
If you're looking to build a complex system then you might be better using an off-the-shelf alternative. Try Googling around for various e-commerce systems (Magento is in vogue at the moment) and Content Management Systems (CMSes) before you decide to reinvent the wheel.
Read this book
also keep going through those tutorials (XHTML, CSS, Javascript) and try out everything you learn as you learn it.
I love the apress books so perhaps Beginning PHP and MySQL: From Novice to Professional, Third Edition might be for you? Do you have a development background?
You may want to look at picking up a book at your local book store or look at grabbing one off Amazon.com. I haven't found really good PHP web resource to learn from. Usually I just do a quick google search on topics I'm trying to code.
Another option is to just dive in and start building applications. I've found that the best way to learn PHP is to learn as you go. Once you have a grasp on the basic syntax and how to move around the code, then you can pick up a book at look at OOP topics as well look into Frameworks such as Zend, CakePHP, etc.
Are you absolutely set on learning PHP? If you are, then buy a good book - there's several mentioned here that are actually ok - but please, learn the security aspects from the start. There's more than enough PHP developers in the world who are writing insecure code (I used to be one of them, so I'd know).
Practice is key though; I've been programming in PHP now for about 6 years, and I'd consider myself fairly competent (I passed my Zend PHP5 Certification a couple of months back), but I still find functions I've never seen before.
A tip - don't even think of looking at Zend Framework, Magento or anything like that until you're comfortable with the basics. If you do, you'll definitely struggle; they use some advanced concepts which even I find it hard to wrap my head around at times.
Alternatively, you could learn something else...
The book recommendations are great. "Mastery", though, comes only from practicing your craft. If you want to learn PHP, you need to build many sites, with PHP (and HTML, CSS, Javascript, MySQL, etc.).
To have confidence that you can build a secure online web store, well, you need to build one. Maybe you can find a company that will pay you to learn. Maybe you will find a colleague to mentor you through it. Or maybe you'll have to dig into books, multiple web sites, and some poorly written "integration guide" from a payment authorization provider. My first time through I was nervous. The second time it went a little quicker. And the third time I felt confident enough to estimate how long it would take.
I'm not trying to be difficult or flip. I just feel that "learn by doing" may be the only way to learn much of this stuff.