As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I'm not a fan of PHP or spaghetti code, or anything like that, but in my experience WordPress works amazingly well, it's well organized, and I've never come across any hard to understand code. The documentation is incredibly thorough, any security flaws are fixed within seconds, and it "just works". Not to mention that it does EVERYTHING, and it has an awesome plug-in system. Oh, and "the Loop" is awesome. I've never had any problems doing simple modifications to the code or to themes.
Can you guys give any specific examples of what you don't like about it, or what you would have programmed differently? I just don't understand why it gets such a bad rap. I wish my own software worked as well and had as many features and looked as nice.
I'm a fan of WordPress, but there are definitely issues that impede coders trying to work with it. As a small example, there's get_the_content() (returns) and the_content() (prints), but there's get_permalink() and the_permalink(). Then, there's just the_date(), because it accepts an argument indicating whether you want it to print or return. This kind of thing drives even an experienced WP person up the wall, because you've always got to be Googling the usage - and it speaks to a deeper lack of attention to detail in the code.
Another glaring issue is the lack of built-in caching. It even used to have it, but they ripped it out and never replaced it. You shouldn't need a third-party plugin to have basic caching in a system like WordPress, particularly with all the other bells and whistles it builds in.
To paraphrase (supposedly) Churchill, though, "WordPress is the worst blogging system... except for all the others".
I've written many custom applications in PHP/MySQL over the years - from tiny to huge. Not having taken the time to learn the details of WordPress, I find it very frustrating to work with (under the hood).
Subjectively:
Very poor naming conventions
Execution flow is bizarre
General lack of organization
Hard to audit what happens when
etc...
Their concepts of usability is great, and support for plugins is also great. I'd just love to see the system re-engineered with those principles, but with a disciplined and clear development methodology.
I'm sure the next guy would say "no it isn't, bla bla bla", but that is just my opinion after bumping into it (hosting, modifying) about 3 times.
It's a subjective question for sure. From experience I've notice WP takes way, way more server resources than other systems or my custom code. I've had to move WP sites off my servers as a consequence. So my experience suggests there are some memory use issues.
As an exercise try going through the code, tracing the logic from the start of a request to a page, and look at how many objects are loaded, how many methods are called before any HTML is output.
Apart from what's been mentioned already:
No sane templating system. All those years and they still have PHP code intertwined with HTML, and default templates that have no support for i18n or l10n whatsoever (hard-coded strings, hard-coded date formats, etc.).
Multiple entry points - maybe it's just me, but it's annoying. Especially when some of those are way too big.
When you have to be sure of a statement that is made by "everyone", if you can, is trying to check it for yourself.
And you can do something in your statement: just read Wordpress source code. Some modules are good, some are a mess, some others are just normal. But all of them compose a great blog system that are used by thousand of people around the world that are more interested in writing good stuff instead of complaining about "how ugly" is a particular source code. In summary, the Wordpress creators have a shippable product that is useful.
In the end, it doesn't matter. If you want a perfect blog system, you can always write one yourself.
Can you guys give any specific
examples of what you don't like about
it, or what you would have programmed
differently?
I would have added more comments.
On a separate note, the most recent version of Wordpress introduced a labyrinthine piece of code that denies access to pages that:
1. Aren't in a menu or submenu
2. Aren't in the $_registered_pages variable.
A lot of plugins for earlier versions of Wordpress have been broken by this new security measure.
Finally, sessions. Wordpress does its very best to get out of your way by handling all its session data in a separate manner from PHP's built-in $_SESSION variable, but it doesn't give you the option of starting the PHP session, you have to add that to the core program yourself. I haven't found documentation that would allow us WP hackers and plugin writers to take advantage of the pre-existing WP session yet, either.
Related
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I've been a PHP/MySQL developer for a number of years now, but unfortunately have only worked with small projects up until now. I'm starting a new website now that is very complex and I'm starting to get confused with the workflow. I'm not sure which parts to take care of first, as they're all fairly intertwined.
I'd love to know how some of you manage your workflow for a new website. I'm working independently, so it'd be easier to explain without multiple developers involved. Also, I'll be using the CodeIgniter framework, so it'd be great to have the workflow involve the MVC model, which should actually make the workflow easier.
After some searching, I came across this helpful diagram:
However, I'm not too sure what falls into each category. Here is a general rundown of what I understand so far. Please feel free to correct me when I'm wrong or when there is a better option.
Planning
Make sure you have clear goals for the project: What do you offer, and for whom? How will it be helpful for others? Etc
Sitemap
List all the pages and sub-pages that are going to be on the site.
Wireframes
Go through your whole sitemap and make a rough sketch of every single page. (How detailed should you get?) You can use pencil and paper, or programs like Axure or Mockingbird.
The next major category in the workflow chart is content, but I'm not sure what this involves. Is it all the text on the website? Database structure? Something else?
Artwork
The actual design/template of the website. Is this really the right place for this, though? I would think that the coding and functionality is more important, and make the design after that.
Coding
This step seems to all-encompassing, and I'd think it needs to be broken down. Is the database structure made first (or was that done in content, after the wireframes?) Do I make the outline for all the functions for each page in the sitemap? Do I just create all the necessary controllers and make comments of which functions I'm going to put and where? Do the models go after the controller outlines, or vice versa? When do I start filling in all the controllers and models?
Constant testing is involved to make sure your code works properly.
Content Population
Would this include the view files in the MVC framework? In other words, all the data that the controllers and models provided?
Final Testing
Make sure everything works in all browsers. Making tweaks and changes here and there. Go all out with numerous "what if" cases.
Production
Site goes live.
Conclusion
The above is what I understand to be an organized flowchart of the steps in developing a complex website, but my understanding could be greatly improved. What should be changed? I could use all the suggestions possible. Thank you.
EDIT: Someone here mentioned "agile development"--from what I'm reading thus far, it doesn't actually have a structure. Correct me if I'm wrong. As I commented on that answer, is it really possible to develop in such a way for complex sites, such as Amazon or Ebay? The workflow process, in my un-knowledgable opinion, should have a clear plan, or else there would be no focus in the project.
FINAL EDIT: Although this question was closed, I'd like to add some info for those that may find this later. I found the following workflow useful: http://www.webassist.com/free-downloads/tutorials-and-training/web-dev-workflow.php. A PDF of the general workflow: http://assets.webassist.com/how-tos/Short-Dev-Checklist.pdf. Agile development can also be used of course, but this could be a good starting point for those that don't know where to start. I may add additional workflows and examples here as I find them.
The R&D world is moving towards agile development, where you don't do so much planning and write everything down from start to finish, but rather do small iterations and make small changes so that you always have one clear goal in front of you, and you can adjust your direction as your understanding of the requirements improves (real ones, based on user feedback, not estimated guess work based on what you think the customers will want/use)
I suggest you research Agile development, and Lean startup methodologies, it changed the way I build online services, and will make you much more efficient and productive.
I can tell you that my online service went live about 2 days after I started coding. That does not mean that you open it to real users right from the beginning, but you can get immediate feedback from the real world instead of keeping it all on your dev machine until you're "ready to go live".
Agile development is definitely a good idea for websites (as, typically, the coding is both relatively easy and independent). The main point about agile is that it allows for changes, and it also allows for adjusting for "it took longer than expected to do Feature B, so C and D will be delivered in another iteration". As you are probably aware, planning larger projects can take a lot of effort, and is almost always longer than you'd expect. With agile, you do each bit as a "vertical slice" - meaning anything done should contribute something useful to the product, all the way from adding a ling on the front-page [or wherever it belongs] to adding the code to handle it and the database model to store/retrieve relevant data.
I'm pretty sure that you still need to do a fair bit of planning for a large site with lots of pages, and lots of database tables, etc. But as long as you have a reasonable grounding in general website/database design, Agile methods will let you design "walking skeleton" (somethig that works in the basic concept, but need more meat on the bones to be a working product). Then you flesh out the sketch with more features, each feature is "complete" in itself, and adds something the customer needs. That way, you always have something you can deliver to the customer after each workitem is finished.
I'm also convinced that Amazon or Ebay has A LOT more than 20-30 tables. I work with a site called www.planetcatfish.com, and it is MUCH smaller and simpler than Amazon or Ebay, and it has 25 tables (besides the phpbb tables for the forum, which is also used for the site specific user functionality). And that was written over many years, using mainly php, a little javascript and a fair bit of mysql inside the php code.
TheZuck's answer is good and very helpfull so I'll just add some of my own experiences, which doesn't necessarilly mean that you'll go through the same thing, and probably won't if you have half a mind for business (which is what I'm lacking. :S).
Content has always been a problem with my clients, so I'd say get them working on that early! If you're working with a copywriter I guess thats not a problem. But there should be some sort of penalty for not delivering the content to you in time.
It is also worth noting that your clients will only really start thinking about their website once they start thinking about the content. Expect to hear about them wanting some changes when they've started working on it.
If you're clients are small businesses, then they tend to not understand what it is that actually takes time. Even though agile development is really nice I believe that this will be hard to implement towards small businesses since they don't have very much money to work with and will probably want a fixed priced for a finished product. And if it's fixed they'll just get pissed if they've used up all their time or whatever it is that they've paid for without giving them a finished product (working deliverable, is not the same as a finished product!).
Clients tend to be IT-illiterate, sometimes to the extreme. Count on you having to put some or quite a lot of time into explaining "obvious" things to them.
Don't overestimate yourself and your abilities, since this will probably mean that you'll charge less than what is actually reasonable. A quality website should cost money, but I for one will understand if you charge to little, you know just to get a few clients.
I realise that this isn't really an answer to your question but I hope it will help somewhat.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I am building a website, newfutureuniversity.org, and I'm not sure if I should rebuild it under a CMS or not. I can do procedural PHP but not OOP PHP (I could learn it if needed though). I have been struggling with this problem for some time so I decided to ask it here.
My page right now works this way: Every page has an include at the beginning and at the end, and each of them calls other includes. For example, the one on the beginning calls the 'translation.php', 'login.php', 'menu.php', etc.
Requirements
Code management. I'm currently using AjaXplorer. It's great, very complete and the little it cannot do the tools my host ( 000webhost ) provides suffice. The other good side is that it allows multiple users with different permissions. I need this functionality to remain.
Blog. I am using Chyrp for blogging since it's lightweight and accomplish my objectives for the blog bit.
Users. Not using any engine, just build my own in old plain PHP. Users can register, log in etc.
Languages. Also built my own. It allows me to translate every bit of information.
Wiki. Or similar. I need (not done yet) a highly personalized wiki engine for the files in the page. I am not sure yet if finding some lightweight one and personalize it or doing one myself. Also, I should include CKeditor in the wiki engine.
Some more future features that I still have to think about.
As you can see, I need a 'base' and different types of engines running at the same time on different directories.
Problems
If there were no problems I wouldn't be writing this question. These are the main problems I find:
Centralized user. The most important problem. Because I'm mixing different engines, each one uses (and even worse if I include the wiki) different user tables. I want a visitor to only need to register once, and then to be able to surf through the wiki, the blog, submit files or to do anything else with the same user name.
Centralized programmer. Same as the user but with the programmers I plan to add to the project. Also it should work with the permissions. Not needed, but much better if possible.
Style. Instead of having to manually change the engines, to have the same style by default to every one. This is probably not possible but also not really important (nor needed), just time consuming.
Therefore, these engines must be built on the same 'base' (CMS), not individually run on different directories. I was thinking about switching to Drupal for the enormous support out there or Joomla for being 'more' customizable, based in what I have read online.
Question
Will these 2 CMS (or any other you propose) keep all the requirements and solve the problems? Or are CMS modules (wiki one, blog one, etc) still build to be standalone? meaning that each one will build a different user table structure. Are there any other advantages from using a CMS?
Ideally the CMS itself would build the user tables and then the modules access them instead of creating their own. I have never worked with a CMS so I would need to learn about them but that's not a problem if it works.
If I were you, I would invest time in learning how to use frameworks, zend, code igniter, yii, etc. A CMS just ties your hands in terms of new layout features or simple functionality improvements.
Definitely go for PHP/OOP. You will find a lot of easy solutions to many problems you come across when using CMS, also you will improve your programming skills, which is the most important thing of all, right?
CMS is NOT a framework. A CMS allows users/admins who don't have knowledge of php, html, css or any other language you might be using to change the content of your site. In some way, it should not restrict your coding. In other words, a CMS can be part of a framework, or your home-fabric piece of code. I see a response which starts with "When I was using CMS..". When you are making your site interactive in some sort, it is a CMS. You are managing the contents of your site with a form that puts some text into a database. Just like the textarea I am typing in now, I am a user that uses the CMS of stackExchange, but I'm just having less rights than the admin. But I am again using the CMS. But stackexchange is building his sites in a framework of some sort, so you can be using a framework AND implement the CMS functionality.
Also, try to understand OOP, it's hard to get into, but when you get the hang of it, it is great to use. It simplifies your code a lot. I learned it through Flash (ActionScript 3.0). I find it easier to understand the basics of OOP over there because you have direct visual output of what you are doing. It's easier than PHP-OOP since PHP and OOP aren't actually fitting together. It is a OOP look-a-like (which gets better and better every time). So try to learn OOP first.
So as a conclusion you might think that I will say build your own CMS functionality in a framework of your choice. But it's kinda hard to get into a framework AND OOP from scratch. So maybe you should build a few trial-and-error websites with very simple functionality to learn OOP and Frameworks. I am learning CakePHP as we speak and learned OOP a couple of years ago. It's kinda hard. So do it step-by-step and think about what you are trying to accomplish and what you need for that. I think this topic is a very good start.
Just for the record, every programmer who is smart, and I think you are, is using the OOP method, since you don't have to rewrite pieces of code, or have to copy-paste. When your code is good, you will have no repeating code anywhere. Which is nice when you run into a bug on 200 pages of the site and knowing you only have to change one file instead of 200. :)
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I've always had a thing for dynamic code. Code that's really easy to add cool new features to, without doing much work. For that reason, I build lots of dynamic frameworks and use them in my projects. Some are small, some are big.
As an example, I built a small custom error reporting framework that I still use in almost all of my projects today.
Here's a quick example of how it works:
error_reportLibrary.php - This is where all the magic happens. The class and all the methods sits here. This is the file included when the framework is needed.
error_reportConfig.php - This is where my configuration goes (error types, ect). Here's an example of this file, which shall give you a pretty good explanation of how the small framework works:
(the comments in the code should explain what each element does as a setting)
# ------ Main Settings ---------
$error_handlingSettings['errorStat']=true;//set this to false, and I wont display any errors. I don't care what the other errorTypes have to say.
$error_handlingSettings['default_highlight_color']="red";//this is the default highlight color that will be used if no color is defined for a specific errorType
# ------ Open API -------
$error_handlingSettings['open_api']['status']=true;//set this to true and I'll show errors for the Open API
$error_handlingSettings['open_api']['highlight_color']="#0ff";//shall I highlight any errors that occur for this specific type? if so, set this to a color.
$error_handlingSettings['open_api']['onRemoteAddr']=true;//shall I display errors to specific IP addresses?
$error_handlingSettings['open_api']['remote_addr'][]="86.8.168.228";//so I will show to this IP
$error_handlingSettings['open_api']['remote_addr'][]="127.0.0.1";//and this IP
# ------ SQL Core -------
$error_handlingSettings['sql_core']['status']=true;//set this to true and I'll show errors for the SQL Core
$error_handlingSettings['sql_core']['highlight_color']="orange";//shall I highlight any errors that occur for this specific type? if so, set this to a color.
$error_handlingSettings['sql_core']['onRemoteAddr']=true;//shall I display errors to specific IP addresses?
$error_handlingSettings['sql_core']['remote_addr'][]="86.8.168.228";//so I will show to this IP
$error_handlingSettings['sql_core']['remote_addr'][]="127.0.0.1";//and this IP
So as you can probably tell, each error type is simply a different part of the project I'm using the framework on (for example, SQL Core is the database framework I use. So if any db query issues occur, this errorType will be looked at when printing errors).
So for printing errors, this is the syntax:
errorModule::doError("errorType","error messege");
As you can see, there are some extra little things I can do. Like display to certain IP addresses and highlight the error text, which I can confidently say: will not affect the scalability of the framework.
Remember, the above is just an example of the dynamic frameworks I create/use in my projects.
Now, to the question(almost): I've been told by a few of my colleges that dynamic frameworks like the above are terrible when it comes to scalability. Regardless of the fact that they are very maintainable. So if I used the above framework on a web app that got 1M+ requests a day, it would totally screw up...
Now I'm not apposing against their opinion (actually....) but I would like to know why this is? Why is a dynamic framework like the above considered bad for scalability?
I think you're missing the point when creating a 'dynamic framework.'
A lot of my earlier PHP code functioned sort of like this; a class with a bunch of methods and maybe a construct method that set up a state, using globals to track configuration in arrays. These all used a lot of memory compared to a wholly OOP approach; and while yes less memory and faster than an 'off the shelf' solution; nothing compared to the way I design frameworks now.
It doesn't appear you are taking advantage of things like interfaces, abstract classes, both class and interface inheritance and so forth. These types of frameworks do scale because the original code base is so small and take advantage of specific OOP functionality (like PHP 5.x's magic methods.)
Multiply a script that you felt was fast enough running on server that's not taxed very much by say 100 and, you've got problems; and you're running out of memory, hitting pages outs; and things will crawl to the point you're forced to reboot/throw more resources at the server.
Why? Poorly written procedural code that tries to act OOP, even tries to look like it, is just wrapping up old habits in a new package.
PHP is slow and clunky in general. It's high-level, which means each line carries "baggage". It's common that a single line of PHP code will convert to a slew of low-level instructions.
You can still scale 'dynamic' frameworks that rely heavily upon PHP's underlying system, and don't waste a lot of time or memory with high-level abstractions.
In my opinion, large, "convenient" frameworks often cause more problems than they solve once shit hits the fan in a production environment. My favorite teachers always reminded me to K.I.S.S. -- Keep It Simple Stupid.
Of course, If you want truly scalable performance you may want to compile your php with hiphop or write your application in a compiled language like C++ or D.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I am about half way through coding my own Php Content Management System from scratch, but now I am nearing the end of coding new features and making it look good and am now being faced with the big issue of security. I know little about the security side of Php except the fact that it is very vulnerable with SQL injection etc. Let's just say my website was going to have loads of user generated content and be like facebook, is that something one person could secure by themselves or am I better off paying someone to do it for me? if so, anyone know how much that would cost?
Any feedback would be greatly appreciated.
Update:
Any opinions on http://www.incapsula.com ?
With so many mature PHP CMS systems available, the only reasons I can think of for writing one of your own would be as an exercise (to learn something), as a challenge (to see if you could), or if you needed some specific feature that the existing ones didn't have. Even if you did want a special feature, I'd still look at extending an existing CMS rather than writing one from scratch - many of them cater for modules and / or plug-ins.
Pros:
It is fun to build your own CMS.
You will learn a lot. It might be the best way to learn PHP, since you will have to deal with a lot of different aspects of it.
Cons:
Your first CMS will always have a "funny" design.
You will have bugs and security holes (but most of the times, people will not notice the security holes). ;)
You will have to spend (much) more time on your CMS than what it would take to build the site with an existing CMS.
Conclusion:
Of course you shoud build your own CMS! You are not a real PHP programmer if you never have built your own CMS.
Is it worth it?
Completely up to you. I'd say it depends on what your goals are with this CMS (generating revenue, just for fun, etc) It's nice to be able to show someone and say "I made that from nothing!"
The only start up costs would be your domain name and monthly web hosting (unless you hire people.) $1.18 annual for a godaddy domain, $8 for hostmonster hosting.
Security's a big issue yes, but maybe that shouldn't be the deciding point in doing what you want or not. There's alot of documentation on stackoverflow and others regarding the subject that could help you.
I've recently created a CMS from scratch with no prior knowledge of anything beyond basic HTML. It's rewarding in many ways and you may even find yourself going down a programming career path.
I think it'd be better to learn how to protect your system. Securing php systems is actually not that big a deal, considering you were able to code your system from scratch.
Just remember, to prevent sql injection: always escape user input entered to the database, mysql_real_escape_string() usually does the job. And use htmlentities() before displaying the content in html pages.
Read on securing your PHP and you'll save yourself the trouble of paying someone to do it, plus it'll help on other projects.
Trust nobody - especially anonymous people! Therefore inject into you mayor asset some safe data. Seems rather wise strategy
Why make your own CMS? Drupua, wordexpress. Jomala might do with some tweaks?!
Yes it is worth making a CMS from scratch. Because you have/only have the features that you only need. Which makes the script less extensive and fit your needs like an Armani suit. Let's consider Wordpress as an example, when your site gets terribly big you would need to terribly tweak it. It has alot of features, and some of them you might not need. The pro if using already-available ones is the community finds the script's bug/holes for you and all you need to do is just update the script.
As for the security part, you can try to find the holes by yourself or hire someone of which their rates may vary. But you might not want to entrust your script to others unless they're trustworthy.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I'm looking for a good, clean PHP-based CMS that has as powerful in-place editing functions as Apostrophe which is great, but out of the question because of its strong reliance on Symphony and command-line tools that I can't use for this project. (As discussed in this question, with a nice contribution from one of Apostrophe's developers! You don't get that every day.)
"In-place" means that almost all editing work (adding content, deleting content, managing media...) takes place in the front-end of the web site, with a small menu in the screen's corner leading to everything else.
Consequently executed, this is an extremely intuitive approach that is very easy to use for end-users a whole lot because of the "point-click-and-type" philosophy.
Does anybody have any solid recommendations?
Take a look at Concrete 5. It used to be proprietary but not anymore and is built using the Zend Framework.
Another CMS that has similar (if not better) functionality but is fairly new is ImpressPages.
Drupal has no seperate backend, all front end stuff. You can use admin panel to still create a good lookin admin panel in your front end though.
All content basically has the tabs
- view
- edit
- revisions
- translate
And any other action you can undertake, same with users.
Drupal's pro's are simple build(no MVC or OOP), large open source community, thousands of modules and module writing for Drupal isn't very complicated.
I see you tagged this wysywig, Drupal allows simple switching between editors and allowed input formats when editing content. :)
Hope this helps.
Try out Pimcore. It provides inline editing and previewing each page in an easy manner.
Demo video of drag & drop interface
Demo video of editing a page
It's built on top of Zend Framework and pretty easy to extend.
"In-place" means that almost all
editing work (adding content, deleting
content, managing media...) takes
place in the front-end of the web site
[...]
Well, the admin is at /admin but there are "preview" buttons for the view of the page currently being edited, and the WYSIWYG does a very good job with keeping a similar layout of the actual layout of the page (i.e. inserting inputs and other form controls right on the elements).
I looked at quite a lot of CMS's and at the end of the day I found this one.
GetSimple
http://get-simple.info/
Its a really great, tiny CMS that is just a very simple and efficient CMS that is easily modifiable.
There is a such a great saying, "With great power comes great responsibility", for me the worst thing that could happen is if you CMS is hacked, goes down and you cannot figure out what software update caused it, I think you are going to stress a lot. Get Simple is very elegant, small and easy to work with.
Highly recommended but might not be suitable for everyone.
It took alot of searching to find this but it sounds like Exponent CMS is your best bet for getting as close to Apostrophe as you can. I provided the wiki link so you could view the demo link at the bottom and the website link for downloading.
No matter what CMS you go with you will need to learn the syntax and methods. Symfony "can" be done all manually by just creating the files yourself instead of having the symfony file create them for you. Should you need to run command line commands, you could always run exec() from php.
There seem to be at least 2 wordpress plugins that enable in place editing.
I don't know what features Apostrophe offers and neither did I try the WP-plugins so I can't compare them.