====== Конспект курса на Codeacademy ======
https://www.codecademy.com/en/tracks/php
Выполняется на сервере, в отличие от JavaScript. Файлы - с расширением .php.
Your PHP code goes inside the delimiters. Here we use the function echo to output I'm learning PHP!. We also end the line with a semicolon.
The echo function outputs strings.
**Сoncatenation operator** glues several strings together. The concatenation operator is just a dot (.).
In addition to outputting strings, PHP can also do math. Remember: no quotes around numbers!
A **variable** can store a string or a number, and gives it a specific case-senstive name. All variable names in PHP start with a dollar sign ( $ ).
";
echo "$myAge";
?>
Comments use two forward slashes %%(//)%%
=== List of comparison operators ===
%%>%% Greater than\\
%%<%% Less than\\
%%<=%% Less than or equal to\\
%%>=%% Greater than or equal to\\
%%==%% Equal to\\
%%!=%% Not equal to
===== If statements =====
An if statement is made up of the if keyword, a condition like we've seen before, and a pair of curly braces { }. If the answer to the condition is yes, the code inside the curly braces will run.
16 ) {
echo "You can drive!";
}
?>
In addition to doing something when the condition is true, we can do something else if the condition is false. We can do this using an if/else statement:
**Elseif** - it extends an **if** statement to execute a different statement in case the original **if** expression evaluates to FALSE. However, unlike **else,** it will execute that alternative expression only if the **elseif** conditional expression evaluates to TRUE.
===== Switch statement =====
A switch statement comes in handy when you have a series of if/elseif/else statements with multiple expressions that depend on the same value. The switch statement also provides a bit of efficiency and readability. Switches work like if statements, if a condition is true, it executes a block of code.
$myNum = 2;
switch ($myNum) {
case 1:
echo "1";
break;
case 2:
echo "2";
break;
case 3:
echo "3";
break;
default:
echo "None of the above";
}
=== Multiple Cases. Falling Through ===
if ($i == 1 ||
$i == 2 ||
$i == 3) {
echo '$i is somewhere between 1 and 3.';
}
case 1:
case 2:
case 3:
echo '$i is somewhere between 1 and 3.';
break;
switch ($i) {
}
switch ($i):
endswitch;
Finally, you can remove elements using //unset://
You can even delete the whole array:
===== Loop =====
A loop is a useful bit of code that repeats a series of instructions for you.
==== "FOR" loop ====
**For** loops are great for running the same code over and over, especially when you know ahead of time how many times you'll need to loop.
Instead of using echo (list of leap years)
we can use
$leap
==== "FOREACH" loop ====
The **foreach** loop is used to iterate over each element of an object—which makes it perfect for use with arrays! You can think of **foreach** as jumping from element to element in the array and running the code between **{ }s** for each of those elements.
$lang";
}
unset($lang);
?>
==== "WHILE" loop ====
A **for** loop can allow for a set number of loop iterations. But what about a situation where (due to randomness, perhaps) you don't know how many times the loop should repeat? In that case, you can use a **while** loop. A **while** loop will execute as long as a certain condition is true.
";
$kk ++;
}
?>
It is important when writing loops to make sure that the loop will exit at some point. The following loop will never exit and is an example of an infinite loop.
while(2 > 1){
// Code
}
while(cond):
// looped statements go here
endwhile;
When they are embedded in HTML, loops that use this //endwhile// syntax can be more readable than the equivalent syntax involving curly braces.
==== "DO-WHILE" loop ====
A **while** loop checks the loop condition __before__ each iteration of the code inside. A **do/while** loop checks the condition __after__ each iteration before looping back. One consequence of this difference is that the code inside a **while** loop can be bypassed entirely whereas the code inside a **do/while** loop will execute at least once.\\
This means that the loop condition can depend exclusively on code within the loop's body. This is the case for the code in the editor where each iteration represents a coin flip, and any time the result of the coin flip is tails, the loop stops.
H";
}
else {
echo "T";
}
} while ($flip);
$verb = "were";
$last = "flips";
if ($flipCount == 1) {
$verb = "was";
$last = "flip";
}
echo "There {$verb} {$flipCount} {$last}!
";
?>
.coin {
height: 50px;
width: 50px;
border-radius: 25px;
background-color: gray;
text-align: center;
font-weight: bold;
font-family: sans-serif;
color: white;
margin: 10px;
display: inline-block;
line-height: 50px;
font-size: 20px;
}
**substr()** allows you to return a substring (piece of) of your string. You pass this function the string you want to get a substring of, the character in your string to start at, and how many characters you want after your starting point.
Two other very useful string functions are **strtoupper()** and **strtolower(),** which make your entire string UPPERCASE or lowercase.
";
$p2=substr($n, 5, 15); // Выведет Califragilistic
echo "$p2
";
$u=strtoupper($p); // Выведет SUPER
echo $u
$l=strtolower($p2); // Выведет califragilistic
echo $l
?>
strpos("emily", "e"); // 0
strpos("emily", "i"); // 2
strpos("emily", "ily"); // 2
strpos("emily", "zxc"); // false
if (strpos("david","h") === false) {
print "Sorry, no 'h' in 'david'";
}
// prints the "Sorry" message
// Round pi down from 3.1416...
$round = round(M_PI); // M_PI is a PHP constant that is equal to pi.
print $round; // prints 3
// This time, round pi to 4 places
$round_decimal = round(M_PI, 4);
print $round_decimal; // prints 3.1416
A very common and useful function is **rand().** This function returns a random number between two numbers. Optionally, you can provide your min and max numbers as parameters.
// prints a number between 0 and 32767
print rand();
// prints a number between 1 and 10
print rand(1,10);
==== Array functions ====
Arrays are a very common thing to use in programming. In fact, **array()** is actually a function! Good job, you have already used an array function. Aside from the **array()** function itself, **array_push()** is arguably the most common and useful function for manipulating arrays. **array_push()** takes two arguments: an array, and an element to add to the end of that array.
Another cool array function is **count().** Passing an array to **count()** will return the number of elements in that array.
";
}
echo "There are " . count($a) . " elements overall";
?>
Задание: выбрать из упорядоченного по алфавиту списка одно имя случайным образом и вывести его большими буквами.
==== Function Syntax ====
The typical structure of a function is as follows:
function name(parameters) {
statement;
}
// Пример
// Here we define the function...
function helloWorld() {
echo "Hello world!";
}
// ...and here we call it!
helloWorld();
- The keyword //function// indicates that the code following it will be a user-defined function.
- //name// indicates the name of a function, which is case insensitive. The name of a function can contain numbers, letters, underscores or dashes.
- The //arguments//, or //parameters//, will be the optional input a function uses to perform calculations.
- And of course, the //statements// themselves will be the code the function executes when it is called.
==== The Return Keyword ====
Instead of printing something to the screen, what if you want to make it the value that the function outputs so it can be used elsewhere in your program? In PHP, the //return// keyword does just that. It returns to us a value that we can work with. The difference between this and //echo// or print is that it doesn't actually display the value.
Think of it like a calculator solving a mathematical problem that takes several steps to complete. The value from each step is computed, but we don't see the result until we get the final answer. In other words, each value is //returned// and the final answer is //echoed// on screen for us.
==== Parameters and Arguments ====
Functions wouldn't be nearly as useful if they weren't able to take in some input. This is where parameters or arguments come in. These are the variables or inputs that a function uses to perform calculations.
function squareValue($number) {
echo $number * $number;
}
$n = 6;
squareValue($n); // echos 36
The function //squareValue,// above, takes one parameter, which it multiplies by itself and then echos the result. The names of the parameters themselves are used internally within the function, so they should be named something helpful.
You can also use multiple parameters as long as they are separated by commas.
===== Objects in PHP =====
PHP is an object-oriented programming language, which means that you can create objects, which can contain variables and functions.
When talking about objects, you refer to variables belonging to these objects as properties (or attributes or fields), and functions are called methods.
These objects are essential when dealing with PHP, as almost everything is an object: for example, functions or arrays are objects, too!
And this shows why we use objects: we can bundle our functions and data in one place, we can create objects easily using classes (object constructors), so we can create lots of instances (objects, which have been constructed via a class), which contain mostly the same data, except some little nuances.
There is a //Person// **class** and one **instance** stored in //$me// on line 32. Then the greet() method of the $me object is called and the result is //echo//d on line 35. Then the stylesheet adds some color to the result. :-)
Try to understand the code. (Don't worry if some of it is tricky — we'll go over it!)
firstname = $firstname;
$this->lastname = $lastname;
$this->age = $age;
}
// Creating a method (function tied to an object)
public function greet() {
return "Hello, my name is " . $this->firstname . " " . $this->lastname . ". Nice to meet you! :-)";
}
}
// Creating a new person called "boring 12345", who is 12345 years old ;-)
$me = new Person('boring', '12345', 12345);
// Printing out, what the greet method returns
echo $me->greet();
?>
==== Objects in Real Life ====
How object-oriented programming is used in real life can be shown with a forum as an example:
Every forum //user// (object) has the same rights: he can //log in// and //write// (methods), can contain some //settings// (properties), but every user has a different //name// (another property).
Every user is created easily, as you create a new **instance** of a //User// **class** when you sign up. And as we've seen, there are some properties and methods that every instance has in common (such as logging in and writing), and there are some which are unique (such as each user's name).
And without object-oriented programming—**OOP** for short—this could not be done that easily. ;-)
Another example: on the above, there is a Person class, so every new Person has some properties, like $isAlive or $firstname, and a method greet().
Right now there is only one instance of the Person class: $me. But we'll reconstruct this class and you'll even create another instance of the class, so your name will be echod, too.
In the next exercises we are going to create some classes, so let's start coding. :-)
==== Building Your First Class ====
Great, now you know the technical terms. :-) Let's start coding by reconstructing the //Person// class.
The basic class syntax looks like the following:
class Classname {
}
The //class// keyword means that you create a new //class;// the syntax is quite similar to the //function// syntax.
And you can create new instances of this class using the following syntax:
$obj1 = new Classname();
The //new// keyword means that you create a //new// object and ensures that your arguments are added as properties, so it initializes the //constructor// (which we are going to deal with later).
We don't need to pass in any arguments, as we haven't added any properties (which can store different values depending on the instance) quite yet.