ex) 관리자가 로그인하면 전용 메뉴를 보여준다
3시 이후에는 페이지 상단을 교체한다
마지막 로그인 이후에 올라온 메시지를 사용자에게 보여준다
-> 공통점 : 데이터와 관련한 특수한 논리 조건이 존재하며 이 조건이 참인지 거짓인지 판단
논리 조건을 쵲오적으로 참 또는 거짓으로 단순화하여 판단
비교연산자와 논리연산자를 사용하여 조건 만들기!
php프로그램의 모든 표현식은 참 또는 거짓의 진위값을 나타낸다.
거짓인 경우,
표현식의 진위값 확인하기
1. 표현식의 실제 값을 알아내기
2. 그 값이 참인지 거짓인지 확인하기
할당 연산이 결괏값을 생성하므로, 다음과 같이 할당 연산자를 연결해,
여러 변수에 한 값을 할당할 수 있음
$변수 = $변수 = 5;
if() 구조
==로 참 거짓 여부 판단
if ($logged_in) {
print "환영합니다";
}
중괄호 코드 블록 안에는 세미콜론 붙이기
코드 블록을 닫는 중괄호 뒤에는 세미콜론 x
동일 연산자는 등호 두개(==)로 표기
= : 값을 할당하며 할당된 값 자체를 반환
== : 동일 여부를 비교하며 값이 같으면 참을 반환
12 == $new messages
: new message에 값을 핟랑하라
abc() : 절댓값 반환
문자열을 숫자로 변환하지 않도록 비교 -> strcmp()
strcmp() 함수에는 두가지 문자열 인수를 넣는다, 사전순서로 크기 파악
두 문자열이 같으면 0 반환
문자열과 숫자 비교할 경우, 문자열을 숫자로 변환하기
루프 구조
일부분을 반복해서 수행하는 것
반복 실행
반복을 멈추는 조건
멈추기 전까지 반복적으로 실행할 코드
for()
괄호 안에 하나의 조건표현시글 넣는 대신 세미콜론으로 구분된 세가지 표현식을 넣는다.
**데이터 집합: 배열 다루기
배열: 연관된 값들의 집합
배열은 원소들로 이루어진다
$변수 = array('corn'=> '노랑'
'beet' => '빨강');
or
단축배열문법
$변수 = ['corn' => '노랑', 'beet'='빨강];
단, 배열변수와 스칼라 변수를 동시에 사용할 수 없다.
php엔진은 내부적으로 숫자 키 배열(인덱스 배열, 순차배열)과 문자열 키 배열 (연관배열)을 각각 독립적으로 처리한다
빈 대괄호는 배열에 원소를 추가한다.
foreach() : 배열의 원소를 순회시키는 방법
배열 다시 정리하기
##논리집합 : 함수와 파일
상단출력함수 ㅡ> 지정된 내용을 출력하는 기능
일반적인 문자열이나 숫자를 변수에 할당하는 것과 똑같이
함수의 변환값도 변수에 할당
전역변수 : 함수 밖에서 정의된 함수
지역변수 : 함수 내부에 정의된 함수
전역변수는 함수 내부에 아무런 영향을 미치지 않는다.
변수의 경우에는 함수 내부에서 전역변수에 접근할 수 있지만 함수 밖에서 함수의 지역변수에 접근할 수 없다
함수 내부에서 전역변수에 접근하는 방법 2가지
1. $GLOBALS 배열을 사용
2. global 키워드
php엔진은 함수의 인수와 반환값에는 어떤 자료형이나 값이 오더라도 제한이 없다.
php엔진은 typeError 즉, 원래 전달되어야하는 형과, 실제로 전달된 형을 알려줌
require 구문 사용-> 다른 파일의 코드를 불러오도록 php
데이터와 로직: 객체 다루기
객체 지향이란 데이터와 조직을 조합해 운용하는 기법
객체 : 사물과 해당 사물에 관련한 행동이 조힙된 구조
클래스 : 객체의 변수와 함수를 묘사하는 틀 혹은 명세서
메서드 : 클래스에 정의된 함수
속성 : 클래스에 정의 된 변수
인스턴스 : 클래스의 개별적인 사용 단위
생성자 : 객체를 인스턴스화할 때 자동 실행되는 특수 메서드. __construct()
정적 메서드 : 클래스를 인스턴스화하지 않고 호출할 수 있는 특수한 메서드 종류, 정적메서드는 특정 인스턴스의 속성값에 의존하지 않는다.
cf) 정적 메서드의 정의는 다른 메서드 정의와 비슷하며 function 전에 static을 키워드만 추가했다. 정적 메서드를 호출할 때는 클래스명과 메서드명 사이에 -> 대신 ::를 넣는다.
예외로 문제점 확인하기
하위클래스(자식클래스) : 부모클래스의 모든 메서드와 속성을 가지고 시작하지만 수정하거나 추가 요소를 넣을 수 있다.
상위클래스(부모클래스)
네임스페이스 -> 코드를 조직하여 서로 연관된 코드를 한데 모으고 자신의 클래스와 다른 사람이 작성한 클래스가 이름이 겹치지 않도록 구별할 수 있다.
ex) namespace 키워드, 클래스명 역슬래시 ex) 호출할 때, \Tiny\Fruit::much("바나나");
클래스를 특정 네임스페이스 내부에 정의하려면 파일 맨위에 namespace 키워드를 쓰고 네임스페이스 이름을 붙인다. 그 밑에 정의된 클래스는 해당 네임스페이스에 속한다.
use 키워드
use Tiny\Eating\Fruit as Snack;
-> use + namespace + class + as name
namespace와 use는 Java에서의 package와 import같은 개념