Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

Project Ideas for PHP

Elite Diviner
Joined
Jul 25, 2013
Messages
466
Reaction score
55
I need some ideas for a new PHP project. I've only coded stuff like a Blogging System, Accounting System, etc. I want something challenging, inspiring and something that would make me to learn something new! May it be a Library or Application, I am alright with any. So, shoot out your recommendations!
 
◝(⁰▿⁰)◜Smile◝ (⁰▿⁰)◜
Developer
Joined
May 29, 2007
Messages
2,167
Reaction score
899
Want a challenge? Write an index website, or a voting website which account registration, auto crawling, activation, e-mails on updates, API etc.
Just some something that's going to be useful to you or something which you can sell, it will give you motivation.
 
QT is better than VS
Joined
Jul 29, 2009
Messages
908
Reaction score
389
code a framework like simplified YII , that response json format yii is good but heavy for small gaming web
 
Elite Diviner
Joined
Jul 25, 2013
Messages
466
Reaction score
55
@TearHear Use composer. It is not a framework but something better. To get composer packages, visit
 
Joined
Apr 28, 2005
Messages
6,953
Reaction score
2,420
Learn through emulation. Find your favorite website, rip their template and recode their functions. You have a live, working website to use to see how everything works. Code yours to emulate every function on theirs.

Basically take the concept of MMO emulation and apply it to websites. Thats how I learned basically everything I know today.
 
Newbie Spellweaver
Joined
Jan 5, 2015
Messages
58
Reaction score
36
Heh. Code a little CMS using Laravel 5, twitter bootstrap or YUI. And make a shop, profiles, forums, Admin panel. Maybe integrate Fb login, Add some 2 Factor Auth, Email activation, PM system. Um. Somehow integrate spam filter/protection. Blog/comments on profile maybe.
Reset password. Change account details page.

The list can go on. Lol. :p:

Love Laravel haha and PHP. Just make sure whatever you do. It's a learning experience or you just like it. xD
 
Joined
Apr 28, 2005
Messages
6,953
Reaction score
2,420
Sorry, how exactly is anything I said illegal?

Are you wanting a project you can release to the public? If so, find somewhere else to get free ideas. If you want an actually effective way to learn new things, then copying another site's functionality is the best way to learn.

Protip: you don't have to release every single thing you work on. The projects people actually learn from are the projects which never see the light of day. There is nothing illegal about emulating functionality of a popular site to learn from. The only way this would be illegal is if you rip a site's template, emulate their code, then try and personally profit off of it. Again if thats your goal then find another website to get free ideas from because you're not getting them here.
 
Elite Diviner
Joined
Jul 25, 2013
Messages
466
Reaction score
55
@Ron I didnt like the idea of ripping. And I want to create an application/script that would be actually used as well as give me a lot more knowledge.
 
Joined
Jun 8, 2007
Messages
1,985
Reaction score
490
If you want an actually effective way to learn new things, then copying another site's functionality is the best way to learn.

No it's not.. Getting creative and doing something original is one of the best ways to learn. Just because you're learning doesn't mean you cannot release your work to the public when you're done with a project. Learning from experience is the best way. How do you know how well you do if you don't release your code out in the wild for others to bang on it and find bugs or other things wrong?

Sorry @Ron, but I do not approve of this particular bit of advice on this topic.

And a side note: Most web developers/designers don't follow best practices. Odds are, if you're "ripping" content from a web-site and trying to learn from that, you're learning bad practices without giving yourself a chance to learn the right way in the first place.. In the work-place, I'd rather train someone who doesn't know anything, than try to re-train someone who thinks they know the right way and actually produce bad code. Those people may say, "There's more than one way to skin a cat" or something along those lines. I'll come up with plenty of reasons why they're way is counterproductive in some way, but I just come off as having a different opinion..

So, please, everyone: learn from reviewed books or some official web-site.. Learning from John Doe's PHP tutorials may, in fact, be anti-learning.. John Doe may be very smart, but at least make sure there are between 95-100% positive reviews.. And a large number of reviews.
 
Last edited:
Elite Diviner
Joined
Jul 25, 2013
Messages
466
Reaction score
55
No it's not.. Getting creative and doing something original is one of the best ways to learn. Just because you're learning doesn't mean you cannot release your work to the public when you're done with a project. Learning from experience is the best way. How do you know how well you do if you don't release your code out in the wild for others to bang on it and find bugs or other things wrong?

Sorry @Ron, but I do not approve of this particular bit of advice on this topic.

And a side note: Most web developers/designers don't follow best practices. Odds are, if you're "ripping" content from a web-site and trying to learn from that, you're learning bad practices without giving yourself a chance to learn the right way in the first place.. In the work-place, I'd rather train someone who doesn't know anything, than try to re-train someone who thinks they know the right way and actually produce bad code. Those people may say, "There's more than one way to skin a cat" or something along those lines. I'll come up with plenty of reasons why they're way is counterproductive in some way, but I just come off as having a different opinion..

So, please, everyone: learn from reviewed books or some official web-site.. Learning from John Doe's PHP tutorials may, in fact, be anti-learning.. John Doe may be very smart, but at least make sure there are between 95-100% positive reviews.. And a large number of reviews.
My favourite place of study is StackOverflow with close reference to php.net manual. Do you think you could recommend me a project which may involve a high amount of logic usage and would be challenging to complete?
 
Joined
Jun 8, 2007
Messages
1,985
Reaction score
490
First, StackOverflow is a great place to take advice, as every user is reviewed and there are so many good eggs there, bad or out-dated advice is pointed out right away, and best practices almost always end up as the top answer.

Second, PHP.net is an official resource for learning PHP, so is a great place to learn as well.

Thirdly.. A "project which may involve a high amount of logic usage and would be challenging to complete" is hard to come up with without knowing your level of skill, or what it is you're trying to learn..

One of my favorite things to do in PHP is to use the to make a given part of the PHP API easier to use. In the case of PHP, this use-case (quoted from Wikipedia) best describes my reasoning:
  • wrap a poorly designed collection of with a single well-designed API (as per task needs)

For example, you could make a MySQL class which makes the MySQLi API or the MySQL specific parts of the PDO API easier to work with.

When constructing an API using the Facade Pattern, I like to design the implementation before any of the API parts. For example, I make a hypothetical implementation like this:

PHP:
$db = new \Database\MySQL($host, $username, $password);

$userData = $db->select('*')->
                 from('users')->
                 where(['username'=>'foo', 'password'=>'bar']);
var_dump($userData);
/*
[
    'id' => 134,
    'username' => 'foo',
    'password' => *some hash string*
    'email' => 'foo@example.com'
    ... all other data stored in the users table for the username 'foo' ...
]
*/

Now with that done, I would build the API so that the above implementation would actually work.

Edit: Sometimes my hypothetical implementation is not quite right. The above example expects a 1-dimensional associative array as the result. That's not actually ideal for MySQL. Most of the time the result is a numeric array (rows) of a 1-dimensional associative array. So, after realizing that, I would update the hypothetical implmenetation to be more realistic:
PHP:
var_dump($userData);
/*
[[
    'id' => 134,
    'username' => 'foo',
    'password' => *some hash string*
    'email' => 'foo@example.com'
    ... all other data stored in the users table for the username 'foo' ...
]]
*/

With that said, it's okay to deviate from the hypothetical implementation a little bit, but for the most part, try to religiously fight to make the hypothetical implementation work as-is. ;)
 
Last edited:
Elite Diviner
Joined
Jul 25, 2013
Messages
466
Reaction score
55
First, StackOverflow is a great place to take advice, as every user is reviewed and there are so many good eggs there, bad or out-dated advice is pointed out right away, and best practices almost always end up as the top answer.

Second, PHP.net is an official resource for learning PHP, so is a great place to learn as well.

Thirdly.. A "project which may involve a high amount of logic usage and would be challenging to complete" is hard to come up with without knowing your level of skill, or what it is you're trying to learn..

One of my favorite things to do in PHP is to use the to make a given part of the PHP API easier to use. In the case of PHP, this use-case (quoted from Wikipedia) best describes my reasoning:


For example, you could make a MySQL class which makes the MySQLi API or the MySQL specific parts of the PDO API easier to work with.

When constructing an API using the Facade Pattern, I like to design the implementation before any of the API parts. For example, I make a hypothetical implementation like this:

PHP:
$db = new \Database\MySQL($host, $username, $password);

$userData = $db->select('*')->
                 from('users')->
                 where(['username'=>'foo', 'password'=>'bar']);
var_dump($userData);
/*
[
    'id' => 134,
    'username' => 'foo',
    'password' => *some hash string*
    'email' => 'foo@example.com'
    ... all other data stored in the users table for the username 'foo' ...
]
*/

Now with that done, I would build the API so that the above implementation would actually work.

Edit: Sometimes my hypothetical implementation is not quite right. The above example expects a 1-dimensional associative array as the result. That's not actually ideal for MySQL. Most of the time the result is a numeric array (rows) of a 1-dimensional associative array. So, after realizing that, I would update the hypothetical implmenetation to be more realistic:
PHP:
var_dump($userData);
/*
[[
    'id' => 134,
    'username' => 'foo',
    'password' => *some hash string*
    'email' => 'foo@example.com'
    ... all other data stored in the users table for the username 'foo' ...
]]
*/

With that said, it's okay to deviate from the hypothetical implementation a little bit, but for the most part, try to religiously fight to make the hypothetical implementation work as-is. ;)
Awesome post! I will make sure I read this tomorrow, too much homework today. :/

Edit: Found time. Alright, I will definitely try this out after my exams. Thanks a lot!
 
Last edited:
Experienced Elementalist
Joined
Jun 16, 2010
Messages
249
Reaction score
76
Take the time to learn an appropriate language for business application development -- Java, C#, or C/C++ -- and create your own web server. With the web being dominated by Apache, nginx, IIS, and GWS there is lots of room for someone else to cut their own slice of the market pie. Set small milestones -- such as initially supporting only static HTML documents -- until you are comfortable then become more ambitious.

If Habbo is your favourite game then find a way for your web server to facilitate the development or deployment of some of the standardized content management systems that the Habbo section has to offer.
 
Joined
Apr 28, 2005
Messages
6,953
Reaction score
2,420
No it's not.. Getting creative and doing something original is one of the best ways to learn. Just because you're learning doesn't mean you cannot release your work to the public when you're done with a project. Learning from experience is the best way. How do you know how well you do if you don't release your code out in the wild for others to bang on it and find bugs or other things wrong?

Sorry @Ron, but I do not approve of this particular bit of advice on this topic.

And a side note: Most web developers/designers don't follow best practices. Odds are, if you're "ripping" content from a web-site and trying to learn from that, you're learning bad practices without giving yourself a chance to learn the right way in the first place.. In the work-place, I'd rather train someone who doesn't know anything, than try to re-train someone who thinks they know the right way and actually produce bad code. Those people may say, "There's more than one way to skin a cat" or something along those lines. I'll come up with plenty of reasons why they're way is counterproductive in some way, but I just come off as having a different opinion..

So, please, everyone: learn from reviewed books or some official web-site.. Learning from John Doe's PHP tutorials may, in fact, be anti-learning.. John Doe may be very smart, but at least make sure there are between 95-100% positive reviews.. And a large number of reviews.

Yes, learning from experience is the best way to learn. That is why I brought up copying popular websites' functionality. You have a clearly defined goal and all resources you need to get to that goal. You can still post code online for other people to review. Whats stopping you?

Emulation simply gives someone a very clear path of exactly what to develop. Trying to make your own "Facebook" site for example, you already know the exact features the end-user needs to make this kind of site. You can use Facebook and other social media sites to get a feel for their user experience, then use what you see to rebuild something that works better. This is absolutely without a doubt the best way to learn anything; taking something, ripping it apart, then piecing it back together.

There is a reason why some of the greatest MMO developers started off with emulation on this very forum. Online tutorials and books are a great way to learn, but if you solely use those resources then you're going to have a bad time in this industry. These resources shouldn't be used by anyone other than very low level beginners. Books beyond that should be targeting extremely specific standards or practices, and those resources are very limited.

Better advice is to start working with node.js or learning REST standards. You'll never be successful as a developer when you're stuck re-coding MySQL classes. Half of our job is knowing when and how to utilize resources which are already available.
 
Last edited:
Back
Top