PHP Functions (Part 2)

따라서 함수의 범위와 모듈성에 대한 강의를 다시 환영합니다 그래서 우리가 범위에서 의미하는 것은 함수의 내부에 있다면 변수에 어떤 영향을 미칩니다

얼마나 광범위하게 변수에 영향을 미칩니 까? 기본적으로 당신은 매우 고립되어 있습니다 이름 공간이라고 부릅니다 그래서 외부 세계에서 변수 x를 가질 수 있고 변수를 가질 수 있습니다 x는 함수의 내부에 있고 서로 영향을주지 않습니다 이것이 정상적인 범위입니다

맞습니까? 그럼에도 불구하고,이 경우에, 나는 가지고있다, 정상적인 범위는있다 이 고립의 종류, 그리고 물건을 전달하고 그것을 반환하여 얻을 수 있습니다 그리고 여기서 일어나는 일들은 숨겨진 것입니다 그것은 고립되어 있습니다 그리고이 경우에는 외부에 $ val이 있고 내부에 $ val이 있습니다

그들은 마치 일치하는 것처럼 보이지만 그들은이 경계를 넘지 않기 때문에 같은 것이 아닙니다 그래서이 코드를 살펴보면, 우리는 그것이 $ val은 10이라는 것을 알고,이 코드를 실행합니다 이 $ val은 다르다 $ val은 $ val이다 Zap_val을 시도해보십시오, 그것은 tryzap 안에있는 것입니다

그런 식으로 작동하지 않습니다 그래서 여기에 100으로 설정하면 다시 돌아옵니다 그것은 여전히이 외부 상황에 있습니다 따라서 외부 범위와 내부 범위가 있습니다 이 값은 100으로 설정되었지만 실제로는 그랬지만 외부에서는 10을 유지했습니다

그리고 그것은 정상입니다 그리고 그것은 당신이 원하는 것입니다 다른 프로그래머가이 코드를 작성한 후이 코드를 작성하십시오 그리고 당신은 그 함수 안에 어떤 변수 이름을 가지고 싶지 않다 많은 사람들이 변수 i를 사용하기 때문에 외부 세계에 영향을 미칩니다

카운터 또는 카운터에 대한 COUNT, 또는 누가 무엇을 압니까? 그래서 당신은 단지 그것을하고 싶지 않습니다 반면에 네임 스페이스를 매우 명시 적으로 공유하고자 할 때가 있습니다 변수를 기준으로 변수에 대해이 작업을 수행해야합니다 이 함수의 모든 변수는 말할 수 없습니다 외부 세계와 공유되지만, 당신은 특정 하나라고 말할 수 있습니다

그리고 당신이하는 방식은이 글로벌과 함께하는 것입니다 당신은 글로벌 $ val을 말합니다 이 특별한 가치, 우리는이 작은 것을 가지고 있다고 말합니다, 그것은 모두 고립되어 있습니다 우리는 매개 변수의 끝과 외부 반환을 가지고 있습니다 그러나 $ val에는 외부 세계에이 특별한 작은 도로가있다

따라서 $ val은 전역 범위의 $ val에 연결됩니다 그리고 이것은 여기에있는 세계적인 범위입니다 그것은 어떤 기능에도 없습니다 그래서 이것은 단지이 두 가지가 연결되어 있음을 의미합니다 그래서 여기에 글로벌 $ val을 10으로 설정했습니다

우리는 ZAP을 실행하고, 여기에오고, 실행하며, 우리는 전역 $ val을 100으로 설정했습니다 이것은 같은 것입니다 그래서 우리가 돌아올 때, 그것은 100입니다 그래서 그것은 당신이 그것을 공유한다는 것을 의미합니다 물론, 조심해야합니다

그것은 당신의 기능이 부작용을 가지고 있음을 의미합니다 그리고 그것은 당신과 외부 농촌 프로그래머가해야 할 일입니다 당신이 다르다면 크게 동의해야합니다 왜냐하면 전역 $ i를 만들기 시작하면 전역 $ i를 사람들은 코드를 사용하기 시작하고, 그들은 여기 바깥 고리에있어 그리고 너는 여기에 고리를 넣고 그 고리가 부풀어 오른다

너는 내가 너의 가치를 바꿨으므로 너와는별로 행복하지 않을거야 그렇게하지 마십시오 사실, 우리는 단지 이런 것들을 사용하기를 원합니다 당신이 아무것도하고 싶지 않기 때문에 드물게 매개 변수로 전달하거나 반환 값으로 다시 보낼 수있는 경우 변경하려는 경우 참조로 전달하십시오

당신이 정말로, 정말로, 정말로, 정말로, 모든 것들을 다 마친 후에, 당신은 당신이 지구 변수가 아닌 다른 변수로 그것을 할 수 없다고 생각합니다 나는 정말로 길고 못생긴 전역 변수 이름을 쓰는 경향이있다 처음부터 그것들을 사용하는 것에 대해서도 생각해 보았습니다 때로는 그것들을 해결할 방법이기도합니다 그들은 정말로 우아하지는 않지만, 당신은이 문제를 가지고 있습니다

당신은 무언가를 전달해야합니다 그리고 그것은 반환 가치의 일부가 아닙니다 당신은 마지막 오류가 무엇인지보기 위해 들여다 볼 수 있어야합니다 마지막 오류를 보여주는 것처럼 PHP에서 상황을 볼 수 있습니다 글쎄, 그것은 세계적인 가치를 가지고 있지만, 누군가는 그것을 정말로 길게 만들었습니다

나는 모든 대문자를 사용하여 길게 만들고 밑줄과 그들에게 여러 단어를 주시길 바랍니다 실수로 $ x 또는 $ line과 같은 변수 중 하나를 누르거나 $ handle 또는 $ json 또는 이와 비슷한 것 나는 결코 그렇게하지 않을 것입니다, 그것은 아주 오래있을 것입니다 그리고 문서화 할 때이 전역 변수가 이것을 설정하고, 당신이 그것을보고 싶다면, 당신은 그것을 볼 수 있습니다 때로는 함수에 정보를 전달하기도합니다

때로는 전역 변수를 사용하여 함수에서 정보를 가져 오지만 나는 그들을 매우 드물게 사용합니다 그리고 내가 할 때, 나는 그들에게 지독하게 긴 이름을 준다 따라서 PHP 내부에서 수행하는 작업 중 하나는 시간이 지남에 따라 PHP가 발전한다는 것입니다 PHP는 객체 지향 기능이 없었습니다 사람들이 반복해서 써야했던 확실하고 멋진 기능들, 결국 추가되었다

그러나이 각각은 PHP의 특정 버전에서 추가되었습니다 실행중인 버전을 알 수 없습니다 그리고 종종 우리는 다른 사람들과 공유 할 코드를 작성합니다 우리는 때때로 우리가 가지고있는 버전을 확인해야합니다 아니면 그냥 기능 만 가지고있을 수도 있습니다

그리고 나는 이렇게 많은 코드를 가지고있다 시간이 지남에 따라 모든 사람의 버전이 따라 잡을 수 있기 때문에 버릴 수 있습니다 그러나 예를 들어, array_combine은 PHP의 모든 값에 존재하지 않습니다 그리고 당신은 function_exists라고 불리는이 함수를 호출 할 수 있습니다 그것은 함수입니다

그것은 Inception 종류의 사촌 우리는 모든 방법을 내려갈거야 이봐,이 기능이 존재하니? 그리고 문자열을 전달하기 때문에 함수 참조와 같지 않습니다 모든 기능을 살펴보고 기능이 있는지 찾아냅니다 그럴 경우 true, 그렇지 않으면 false를 돌려줍니다 자, 보통이 메아리를 인쇄하지 마십시오

일반적으로 실제로 당신이하는 일은 함수를 정의하는 것입니다 당신은 아무것도하지 않고 실제로 함수를 정의합니다 이전 버전과의 호환성 코드를 입력하는 방법입니다 버전에 존재하지 않을 수도있는 기능을 사용하려면 고객이 운영 될 것이며, 존재하지 않는다고 말할 수 있으며, 정의 할 수 있습니다 그런 다음 PHP에서 array_combine이 수행하는 작업을 수행합니다

그리고 array_combine이 내장 된 PHP 버전에서 실행하면, 그런 다음 그들은 기본값을 사용하기 시작합니다 그리고 나서 내가 말했듯이, 몇 년 후 코드를 던져 버렸습니다 모든 것을 위해 PHP 7을 사용하십시오 그리고 PHP 사이에 몇 가지 물건이 있습니다 심지어 추가 된 다음 PHP 7에 오는 PHP 5의 버전에서도, 훌륭한 언어이지만 우리 모두가 PHP 7을 실행하고있는 것은 아니므로 조심해야합니다

그래서 phpnet에서 PHP의 문서를 보면, 이 특정 기능이 어떤 버전에서 작동하는지 알려줍니다 그리고이 버전은 PHP 407보다 큽니다

이 시점에서 모든 사람들은 적어도 PHP 5를 사용합니다 그러나 다시 한번, 당신이 아마하고 싶지 않을 것이지만, 당신은 아이디어를 얻습니다 그들은 이것이 모든 단일 버전이 아니라는 것을 당신에게 알리고 자 노력하고 있습니다 그래서 그것은 그곳의 기능입니다 흥미로운 또 다른 점은 PHP가 움직이는 표적이라는 것입니다

우리는 당신의 데스크탑 PHP, 특정 플러그인 세트가있는 특정 버전이 될 것입니다 그런 다음 서버로 이동하면 무언가가 작동을 멈 춥니 다 이 서버에서 어떤 버전을 실행하고 있습니까? 어떤 기능입니까? 그리고 때로는 PHP의 구현을 조사해야합니다 당신이 작업하고있는 PHP의 인스턴스 그래서 그들은 PHP에 phpinfo라는이 함수를 내장했습니다

글자 그대로 일반적으로이 세 줄의 내용을 PHP 파일에 써서 덤프합니다 PHP 내부 구성을 사용하면 많은 정보를 얻을 수 있습니다 그리고 만약 당신이 저의 첫 임무를 수행했다면, 당신은 이미 그것을 보았습니다, 우리는 display_errors가 켜져 있는지 꺼져 있는지 알아 내고 싶었 기 때문에, display_errors가 켜져 있는지 확인하려고했습니다 그건 그렇고, 빠른 광고는 display_errors가 켜져 있는지 확인하십시오 PHP 작성시 모든 정당성 그리고 그것들은 이것에서 나온 스크린 샷입니다

그리고 컴파일 된 위치, 옵션의 종류, 그것은 그것에 관해서 여러가지 것들에 대해 자세하게 설명합니다 PHP의 일부로 구성되는 소프트웨어, 누락 된 부분, 현재 상태, 모든 디스플레이 설정 등, 등등, 등등 그래서이 일이 왜 효과가 없는지를 말하면서 매우 유용합니다 내가 기대하는 방식 일까? 그래서 뭔가를 파악하기 위해 종종 그렇게해야합니다 그리고 모든 출력, 모든 테이블과 작은 회색과 파란색, 모든 것이 나옵니다

그 모든 기능이 그 기능에서 나옵니다 문자 그대로, 세 줄의 코드를 작성하면이 모든 것을 덤프합니다 구성 그리고 그것은 때때로 중요한 것으로 판명 되었기 때문입니다 당신은 당신의 PHP 환경에 동종의 피어를 사용할 수 있습니다

이제는 여러 파일로 프로그래밍하는 것에 대해 이야기하겠습니다 그리고 그것은 일종의 기능과 비슷하지만 모듈성의 단순한 버전이기도합니다 그래서 하나의 PHP 파일에서 당신을 허용하는 몇 가지 PHP 문장이 있습니다 다른 PHP 파일의 내용을 가져 오는 것 네 가지 기본 변형이 있습니다

포함 및 필요가 있습니다 include와 require 사이의 차이점은 치명적이지 않은 오류이지만 종종 PHP는 어쨌든 불평 할 것입니다 그래서 때때로 이것을 if에 넣어야합니다 문을 사용하여 실제로 선택 사항인지 확인하십시오 파일이 있는지 여부를 확인한 다음 그 파일을 포함시켜야합니다

더 재미있는 것들은 한 번 버전입니다 그리고 대개의 경우, 문서 머리글과 같은 것을 잡아 당기는 경우 안에, 당신은 단지 여기에 넣고 싶다고 말하는 것을 포함을 사용합니다 그러나 라이브러리 코드를 사용하는 경우 함수 또는 어쩌면 정의 된 일부 오브젝트가 필요할 수 있습니다 그리고 그것이하는 일은 당신이 어떻게 든 이미 요구 된 것보다 위에 있다면, 그것을 다시 요구하지 마십시오 그래서이 라이브러리 집합이 필요하다고 말할 수있는 방법 일뿐입니다

함수, 그리고 나중에 다른 라이브러리 함수에서, 그것은 동일한 라이브러리 함수 집합을 설정해야한다고 말합니다 그리고 PHP가 이미 포함되어 있고 두 번 포함되지 않았다면 알아낼 것입니다 정말 멋진 기능입니다 자 이제 이걸 어떻게 사용할 지에 대해 조금 이야기 해 봅시다 웹 사이트 개발

그래서 여기에 모두를위한 웹 응용 프로그램, 나의 행복한 작은 웹 사이트가 있습니다 그리고 당신이 이동하고 당신이 여기 와서 당신이이 페이지에 올 때, 그리고 그런 다음 여기를 클릭하면이 페이지로 이동합니다 그리고이 상위 탐색 비트가 변경되지 않는 것처럼 보입니다 데스크톱 응용 프로그램처럼 보입니다 따라서 전체 요청 / 응답주기가 실제로 변경됩니다

자, 저는 Ajax 나 브라우저 속 물건에 대해 이야기하는 것이 아닙니다 이 경우 URL이 변경되고 한 URL에서 다른 URL로 이동했습니다 전체 요청 / 응답주기가 발생했습니다 하지만 기본적으로 모든 페이지의 맨 위에 동일한 내용을 넣고 싶습니다 말 그대로 수백 페이지가 될 수 있습니다

어떻게 그렇게 할 수 있습니까? 우리가 필요로하는 것을 사용하거나 포함하거나 필요로하는 것입니다 이 경우 require는 중요하지 않습니다 한 번 요구하지 않으면 '우리가 그들을 요구할 사촌이 정말로 중요하지 않습니다 그래서 내가 만든 것은이 특정 웹 사이트에 구축 된 것입니다 동일한 폴더에 index

php가 있습니다 topphp와 navphp라는 파일이 있습니다 그래서 top

php는 출력을 생성하지 않습니다 모든 CSS와 JavaScript 및 설정입니다 헤더 부분과 페이지의 제목 및 나오는 모든 것 그리고 navphp가 탐색 비트를 발행하므로 nav

php가이 부분입니다 그리고 난 끝났어, 여기에 오는 문서의 시체를 갖게 될거야 그건이 시체 야 그리고 나서 모든 페이지의 끝 부분에 있어야 할 물건이 있습니다 PHP로 다시 전환 한 다음 일부 바닥 글이 필요합니다

그래서 indexphp, topphp, navphp, footphp, 그리고 그들은 모두 같은 폴더에 있습니다

이제는 이러한 것들을 모듈로 분리했습니다 때로는 이러한 기능을 수행 할 수 있으며 점점 더 많이 객체 지향적 인 경우,이를 위해 함수를 사용하는 코드가 보일 것입니다 그러나 이것을 수행하는 고전적인 방법은 require 문을 사용하는 것입니다 이제는 다른 페이지가 있습니다 바로 여기에 install

php가 있습니다 그래서 installphp가하는 일은 CSS를 얻으려면 동일한 상단이 필요하다는 것입니다 자바 스크립트 환경에서 바로 탐색을 사용하여 예쁜 탐색 모음을 설정합니다 그리고 약간 다른 HTML이 있습니다

HTML은 그 몸체입니다 당신이 보는 부분 그리고 나서 우리는 바닥 글이 필요하다는 것을 확인합니다이 경우, 너가 충분히 멀리 내려 간다면 나는이 물건에 저작권과 약간의 물건이 있다고 생각한다 모든 페이지 하단에는 저작권이 있으므로 모든 페이지의 맨 아래에 약간의 JavaScript가 있습니다

분석 추적 및 그런 것들 그래서이 패턴을 보았습니다 이제이 중간 부분을 계속 대체 할 것입니다 그것이 실제로 웹 사이트의 내용입니다 이 중간 부분은 계속해서 교체되고 한 페이지에서 다른 페이지로 이동할 때 그리고 이것이 우리가 이러한 페이지를 만드는 방법 중 하나입니다

반복되는 요소들을 반복해서 가지고 있습니다 그리고 이것은 PHP를 통한 빠른 실행, 함수, 우리가 새로운 기능을 만드는 방법, 다른 형태의 패싱, 기본값과 같이 또한 파일을 포함하고 필요합니다 PHP가 변화하고 있다는 사실을 범위 지정하고 다루는 것뿐만 아니라, phpinfo를 사용하여 실행중인 버전을 확인하는 방법 그리고 특정 일이 아닌 경우 function_exists를 사용하여 PHP를 정렬하십시오 현재 사용중인 PHP 버전에 있습니다 희망이 당신이 유용한, 환호를 발견했다

[음악]