When comparing PHP vs Sass, the Slant community recommends Sass for most people. In the question“What are the best web design tools?” Sass is ranked 3rd while PHP is ranked 26th. The most important reason people chose Sass is:
You are able to declare custom functions with Sass (for example, converting units) which can be easily invoked, even when using shorthand properties. This results in cleaner, more reusable code.
Specs
Ranked in these QuestionsQuestion Ranking
Pros
Pro One of the most common languages
According to the 2015 Stack Overflow Developer Survey (26,086 people surveyed), PHP was the 5th most popular/used language at 29.7%.
Pro Lots of tutorials online
Pro Used by most common CMS platforms
Many clients are looking for an easy-to-update web site that's flexible and free. Drupal and Wordpress fill those needs very well.
Pro Most prominent language for web applications
Part of the de facto standard web application stack.
Pro Great third-party package manager
PHP standard library is somewhat subpar, but if you need plugins, language features, composer has them all( you can even puzzle together a custom framework from composer).
Pro Fast
Since 7.x was released, PHP has become a pretty fast language.
Pro Lots of PHP frameworks available which help with development
PHP people love frameworks, and with frameworks such as Laravel, you can build a web app or API really fast (Facades, ORMs, scaffolding etc.)
Pro Great documentation
Pro Powerful advanced function features
You are able to declare custom functions with Sass (for example, converting units) which can be easily invoked, even when using shorthand properties. This results in cleaner, more reusable code.
Pro Nested selectors
Sass allows you to nest selectors which results in code that is both faster to write and cleaner to read.
For example, this:
.parent
color: blue
.child
color: yellow
Will compile to this:
.parent {
color: blue;
}
.parent .child {
color: yellow;
}
Pro Rapid development
Another big advantage for Sass is the very active community pushing the development forward at a rapid pace. Sass is constantly coming out with bug fixes, and are often the first to come out with improvements.
This is an important factor to keep in mind when picking a preprocessor to invest your time into.
Pro Extends CSS maintaining compatibility with CSS standards specification
It comes with two possible syntaxes:
- Sass - No parens or semicolons allowed and the nesting is dictated with whitespace.
- SCSS - SCSS syntax is a superset of CSS – which means SCSS can be written as CSS, but has been expanded to include the features of Sass as well.
SCSS is easier to pick up for beginners and Sass has a cleaner syntax. Having both syntaxes means you can pick the one that best suits your coding style.
The mandatory syntax rules for both SCSS and Sass results in a more consistent code. For a more detailed analysis between Sass and SCSS go here. To see a nice comparison of the Sass syntax against CSS and SCSS go here.
Pro Output minified CSS
Sass simplifies minifying CSS files by offering a one-line command that will output a minified version.
Pro Easy to learn
It's very comfortable and easy to write/learn Sass, even for beginners.
Pro Compass framework provides added features
Sass can be used with a framework called Compass, which provides additional functions and mixins which can reduce the amount of code you have to write.
For example, Compass will take care of vendor prefixes.
This:
div {
background-image: -webkit-linear-gradient(#F00, #000);
background-image: -moz-linear-gradient(#F00, #000);
background-image: -o-linear-gradient(#F00, #000);
background-image: linear-gradient(#F00, #000);
}
Can be written as:
.gradient {
@include background-image(linear-gradient(#F00, #000));
}
For a full list of features, check out the Compass documentation.
Pro Source maps support
Rather than being limited to editing the outputted CSS file in devtools, with source maps you are able to manipulate the original .scss file.
Pro Libsass - C/C++ port of Sass
There is also a C/C++ port of the Sass CSS precompiler called Libsass that decouples Sass from Ruby. It is very fast, portable and easy to build and integrate with a variety of platforms and languages.
Pro New sass package means you no longer need external dependencies
The latest implementation of Sass is written in Dart, and compiles to pure JS with no native code or external dependencies, means you no longer need Ruby or libSass.
Pro Easy to use with ruby apps
Since it's written in Ruby, it's easier and faster to use with Ruby apps.
Cons
Con Poorly designed language
Despite its widespread use, PHP is generally looked upon poorly from a design point of view. The consistency of function names and function argument order, lazily and borderline non-functional implementation of object oriented programming, can only receive requests via POST methods, slow version adoption (the PHP you learn right now may not work on every webserver you'll work on), and a focus on "hacking things together" rather than "doing it right". These are all very common complaints when it comes to working with PHP. While not a bad language to learn, PHP is not at all a good language to learn first, as it will probably teach bad habits.
Con Immense catalog of insecure frameworks
The most serious security problems in websites on the web today are almost universally found in popular PHP frameworks, CMS platforms, libraries and code samples, almost all stemming from poor language design, bad tutorials and awful resources.
Con After python, probably one of the worst languages ever
Con Poorly designed language, awful syntax & luckily on the decline
Nobody in their right mind is using PHP for new software, if you decide to learn it as your first language you'll be stuck working in teams with old developers who have had no interest in the computer programming field since they landed their first job while maintaining some 2000 era archaic website codebase.
Con Most tutorials are out of date
A lot of very bad tutorials are still widely circulated among beginners, and these tutorials teach very poor programming practices.
Con Most resources are poorly-written
Few resources exemplify the "correct" or secure use of features.
Con Interpreter being too permissive
If you forget the dollar sign, the variable name will be converted to a string.
Con Requires Ruby or libSass
To compile Sass, it needs either Ruby or libSass installed locally.
Con Noisy syntax
There is many unnecessary characters when using the SCSS syntax.
{}:;@
However using the Sass syntax eliminates them.