PHP25.0 Code Reuse with Functions

안녕하세요 이 비디오에서는 새로운 주제에 대해 이야기하고 싶습니다

새로운 주제는 소프트웨어 재사용, 코드 재사용입니다 물론 우리에게 시간이 걸립니다 우리의 PHP 스크립트에서 실제로 작동하는 코드를 작성하기위한 노력 더 많은 마일리지를 얻으려면, 이미 작성한 코드를 더 많이 사용하고 테스트 및 디버깅은 확실히 가치있는 일입니다 당신이 그것에 관해서 생각한다면 시간은 돈이다 그러면 우리가 작성한 코드를 재사용 할 수 있다고 말할 수있다

이전에 우리에게 시간을 절약 해 주므로 돈을 절약 할 수 있으므로 소프트웨어를 사용하는 것이 더 저렴합니다 코드를 재사용 할 수있는 개발 그것은 많은 다른 의미에서 의미가 있습니다 만약 PHP를 사용하여 하나의 웹 사이트를 만들고 그 웹 사이트를 만드는 동안 상상해보십시오 물론 많은 코드가 작성됩니다 글쎄, 다음 주나 다음 달 또는 내년에 무슨 일이 일어나는가? 계속 나아가고 또 다른 프로젝트를 쓸 때? 새로운 프로젝트가 진행될 가능성이 있습니다

내가 이미 완성한 것과 비슷한 점이 있다면 첫 번째 프로젝트에서 두 번째 프로젝트까지 사용할 수있는 코드는 분명한 시간입니다 저축과 시간 절약은 프로젝트가 더 빨리, 더 많은 프로젝트를 수행 할 수 있음을 의미합니다 더 적은 시간에 포장 될 수 있으며, 내가하는 모든 일은보다 일관성 있고 더 신뢰할 수있는 코드를 재사용 할 때 단점은 없습니다 재사용 코드는 전반적으로 할 수있는 훌륭한 것입니다 그것은 당신이해야 할 일입니다

거의 항상 한 단계 또는 다른 단계에서 생각하고 있어야합니다 을 위해 노력하고있다 PHP는 잠재적으로 우리가 할 수있는 몇 가지 다른 방법을 우리에게 제공합니다 코드를 재사용하십시오 그 중 하나는 이미 잘 알고 계실 것입니다

이전 프로그래밍 경험, 아무것도 아닌 경우 JavaScript 이 형태의 소프트웨어 재사용 우리가 함수라고 부르는 형태의 형태입니다 함수는 단순히 명령문의 집합이며, 기본적으로 몇 가지 작업을 수행하는 PHP 문장 모음, 일부 작업 완료, 우리는 함께 묶어 그 문장들이 함께 저장되도록합니다 그들은에서 이동할 수 있습니다 프로젝트를 프로젝트로 만들거나 페이지를 함께 페이지로 만들고 언제든지 호출 할 수 있습니다 그들은 필요하게된다

PHP의 함수는 스타일로 작성되었습니다 자바 스크립트에서 함수의 PHP 함수는 키워드 function으로 시작합니다 함수의 실제 이름에 따라 그 이름을 원할 수도 있습니다 함수의 이름 다음에 괄호 세트가옵니다 괄호는 변수를 저장하는 데 사용됩니다

그런 다음이 변수는 함수에 제공 될 값을 보유하는 데 사용됩니다 함수가 호출됩니다 본질적으로 함수가 수행 할 수 있어야 할 수도있는 정보 그 직업 그 괄호 다음에 중괄호가옵니다 중괄호 함수 본문, 실제로 무엇이든 다른 구문을 모두 유지하십시오

그 함수는 중괄호 안에 넣어집니다 다음은 그 예입니다 대신 name이라는 함수를 생성하기 위해 say hello라는 함수를 생성 할 것이다 안녕하세요가 내 기능의 이름이 될 것이라고 말하면서 지금 당장은 간단히 시작해야합니다 나는이 함수를 설정하려고합니다

그래서 모든 것은 문자열 hello을 echo합니다 휴식으로 이 시점에서 내 브라우저에서 특정 페이지를 당겨 올리면 안녕하세요가 아무데도 나타나지 않는 것을 볼 수있는 페이지를 새로 고칩니다 물론 이유는 왜냐하면 당신이 함수를 작성할 때, 당신이하는 일은 그 함수를 만드는 것입니다 스크립트에 해당 기능을 제공하고 있지만 반드시 그런 것은 아닙니다 당신이 그것을 사용하고 있다는 것을 의미합니다

그래서 여기에, 비록 내가이 hello 함수를 만들었지 만, 나는 실제로 그것을 어떤 식 으로든 부르지 않았다 PHP에서 함수를 호출하는 것은 매우 비슷합니다 다른 언어로 함수를 호출하는 것 필자는 단순히이 함수의 이름을 철자로 사용했습니다 바르게

함수 이름 뒤에 괄호를 넣었습니다 어떤 값이 그 괄호 안에 그 기능이 주어질 것이다 이 함수 호출이라고 부릅니다 이것은 실제로 PHP가 내 기능을 활성화하도록 요구하는 곳입니다 일단 내가 거기에 넣으면 브라우저로 돌아가서 새로 고침하면 실제로 우리가 볼 수 있습니다

그 시점에 나타나는 인사를해라 안녕하세요 기술적으로 내 함수 호출이 발생한 지점과 동일합니다 내 기능을 호출하려고하면 어떻게됩니까? 함수가 실제로 쓰여지기 전에 여기에? 전에 여기에 다른 함수 호출을 넣으면 함수 자체, 브라우저로 가서 실행하면, 그것도 볼 수있는 작품 잘 됐네 PHP는 코드의 사전 평가를 수행합니다

우리는 이전에 어떻게 실제로 통과하고 PHP 파일의 모든 비 PHP를 PHP 문으로 변환하는지, echo 문과 같은 것입니다 글쎄, 그것도 약간의 기능에 대한 작품 동안 그 시간에 PHP로 모든 것을 변환 할 때 함수가 존재한다는 것을 알게되면, 그 함수는 사용할 수있게되지만 실제로는 아직 실행하지 않습니다 일종의 두 번째 패스는 실제 함수 호출을 보았을 때 이미 알고 있습니다 우리의 기능은 비록 기술적으로 기능이 없더라도 그 시점에서 실행할 수 있습니다 일종의 선형 감각은 실제로 아직 정의되지 않았습니다

사실 PHP가 기술적으로 실제로 함수 자체를 작성하기 전에 함수를 호출 할 수 있습니다 거의 한 번도 실제로 한 적이 없습니다 혼란스럽고 누군가를 위해 더 어렵습니다 코드를 읽으려고합니다 계속 진행하고 정의하는 것이 더 좋은 아이디어입니다

먼저 함수를 호출 한 후 호출하십시오 사실, 매우 일반적으로 우리가 완전히 분리 된 PHP 블록을 잠재적으로 만들 수 있다는 것입니다 나중에 우리의 함수를 정의 할 수있는 문서의 맨 위로 실제로 필요할 때마다 문서에서 그럼 여기서 우리가 가진 것은 아주 간단한 PHP 함수 이 특별한 기능은 실제로 많은 것을하지 않습니다 명백하게, 그냥 hello라는 문자열을 반향 출력합니다

PHP의 함수는 대부분의 언어와 마찬가지로, 우리가 그들과 좀 더 상호 작용하기 시작할 때 더 흥미로 웠습니다 물론, 2 기능과 관련하여 가장 일반적인 유형의 상호 작용이 데이터를 다시 가져오고 데이터를 다시 가져옵니다 전에 언급했듯이, 우리가 원할 때마다 PHP 함수에 데이터를 전달하기 위해, 우리는 그 데이터를 PHP 함수의 인자로 제공함으로써 그렇게합니다 기능 자체 본질적으로 함수를 호출하면 우리는 통과하길 원합니다

여기에 내가 그것을 내길 원한다고 해봅시다 – 안녕하세요 사람의 이름 그리고 그 사람이 내가 인사하기를 원하는 사람입니다 그래서 여기에 내 첫 번째 전화 안녕하세요, 문자열로 이름을 지정하겠습니다 내 친구 Victrola에게 전화 할게 만약 내 함수에 데이터를 전달한 다음 함수 자체에 데이터를 전달해야합니다

방법으로 데이터를 수신 할 수 있습니다 변수를 괄호 안에 넣으면됩니다 함수 이름 다음에 여기에서는 name이라는 새로운 변수를 만들겠습니다 작동 방식은 hello 함수를 호출 할 때마다 그 함수에 전달 된 변수는 여기에 그 변수에 저장 될 것입니다

그래서 Victrola는 이 함수가 실행되는 동안 name 변수의 값 그러면 나는 할 수있을거야 함수 자체 내에서 변수를 가져 와서 사용하십시오 그래서 나는에서 보간 할 것입니다 거기 에코에 의해 생성되는 문자열에 name 변수

내가 실제로 아래에서 내 함수를 호출하십시오 물론 필자의 함수에 문자 값을 전달할 수 있습니다 변수 값을 전달할 수도 있습니다 변수를 가지면 예를 들어, 사람이라고 불렀고 그 이름에 퍼디라는 이름이 또있었습니다 person 변수를 함수에 전달하십시오

사람 변수의 값은 함수 자체로 전달 될 수 있습니다 그것은 중요하지 않습니다 전달 된 사람 변수 자체; 그것은 그 변수의 값의 사본입니다 그래서 person 변수의 값 사본 인 Purdy 문자열의 사본이 hello 함수를 말하고, name 변수에 저장하고, 실제로 함수가 사용될 때 사용한다 실행

그래서 여기에 함수를 호출하고 그것을 사람의 이름으로 전달합니다 이리 함수를 호출하고 변수의 형태로 사람의 이름을 전달합니다 브라우저에서 살펴 봅시다 모든 것이 제대로 작동하는 것처럼 보입니다 안녕 Victrola와 안녕, Purdy

원한다면 여러 값을 전달할 수 있습니다 다른 기능들 각각으로 그냥 이름을 전달하는 대신에 내가 그에게 인사하고 싶었던 횟수를 제공해라 예를 들어, Victrola에게 세 번 인사를 나누고 싶었습니다 여분의 번호를 전달하고 싶을 수도 있습니다 3을 말하자

그런 다음 내 함수에서 다른 변수를 받아 들일 수있다 그 값을 사용하고, 함수 자체에서 그것을 사용할 수 있습니다 어쩌면 내가 넣을거야 보통의 for for loop, 좋은 구식 counter-controlled for loop는 그렇지 않다 우리가 실제로 잠시 동안 사용했다고 생각해

i라는 카운터 변수를 설정하겠습니다 그 값을 0으로 초기화하면 카운터 변수 i가 1보다 작 으면 전달되는 변수의 횟수입니다 각각 하나씩 증가합니다 통과하는 사람들의 그래서 시간의 가치가 무엇이든간에 몇 번이나 될 것입니다 우리는 실제로 인사합니다

Victrola를 위해 여기 아래로, 나는 말하고 싶습니다 안녕하세요 세 번 그건 잘 작동합니다 여기 사람과는 어때? 만약 나는 여러 번 지정하고 싶지 않았다 어쩌면 나는 거기에 대해, 예를 들면, 기본값이됩니다

PHP는 함수를 정의 할 때 실제로 그렇게 할 수 있습니다 우리는 전달할 수 있습니다 우리는 변수에 기본값을 할당 할 수 있습니다 그래서 여기에 함수 정의 자체를 $ times = 1에 넣으면 실제로 일어날 일은 내 기능과 나는 그것을 여러 번 통과시킨다 내가 Victrola에게 인사 할 때처럼 3을 전달하면, 1과 3이 times 변수의 값이 될 것입니다

더 나은 값이 이미 사용되었으므로 = 1은 무시됩니다 내가 인사 할 때 전화 해 두 번째로 나는 퍼디라는 이름의 사람 변수를 그 시간에 전달합니다 나는 번호를주지 않는다 그래서 다른 번호가 제공되지 않았기 때문에 어떤 일이 일어날 것인가? 내가 여기에 제공 한 기본값을 사용하면 숫자 1을 사용할 것입니다

그래서 내 말은 그 지점에서 안녕하세요 기능, 내가 얼마나 많은 시간을 인사하고 인사 할 수 있습니다 안녕하세요, 얼마나 오랫동안 인사 할 지 말해주세요, 안녕하세요 한 번만 말할 것입니다 브라우저를 살펴 봅시다 어떻게 작동하는지보십시오 우리가 기대하는 것처럼

나는 Victrola에게 세 번이나 인사를했다 안녕, 퍼디 한 번만 이 기본값을 전달할 수 있으면 매우 편리합니다 우리의 PHP 함수의 인자에 대해 이러한 기본값을 설정할 수 있어야합니다 한 가지 당신은 당신이 그들을 사용하고있을 때 조심하고 싶다

그러나, 당신이 기본값을 설정할 때마다 가치, 항상 그 주장의 가장 오른쪽에 있어야합니다 그래서 여기에 이름이 있습니다 첫 번째 인수와 시간을 두 번째 인수로 사용합니다 나는 가장 오른쪽으로 시간을 부른다 이 마지막 인자, 시간, 기본 설정을 가질 수 있습니다

이름에 기본 세트가있을 수 있지만 설정할 수 없습니다 시간에도 기본값이 없으면 name의 기본값 PHP가 해독하려고한다고 생각한다면 우리가 다른 인수 변수에 넣고있는 다른 값을 어디에 둘 것인지, 나는 그것이 일종의 이해가 될 것이라고 생각합니다 예를 들어, 여기에 전화 할 때 인사하고 나는 그 사람이 그 이름 변수에 속해 있다는 것을 어떻게 알 수 있습니까? time 변수에 name에 대한 기본값을 설정했지만 times에는 설정하지 않았습니다 그래서 당신은해야합니다

당신이 그들을 넣는 순서를 조금 조심하십시오 thumb은 선택적 인수이며, 기본값을 갖기위한 선택적 데이터입니다 할당 된 마지막 인수인지 확인하십시오 있을 거라면 하나 이상의 옵션, 그냥 하나 이상의 옵션이 될 수 있는지 확인하십시오 마지막으로 함수에 실제로 전달되는 여러 인수 따라 오면 그 규칙은 꽤 쉬워 네가 생각하면 너무 복잡해

그것 아마도 PHP에서 함수로 할 수있는 가장 흥미로운 다음 일은 실제로 값을 반환하도록해야합니다 PHP 함수가 실제로 생성하는 모든 값 함수를 호출 한 사람이면 누구에게나 되돌려 줄 필요가 있습니다 실제로는 키워드 return을 사용하여 수행 할 수 있습니다 키워드를 반환하면 모든 것을 사용할 수 있습니다

그 자체만으로는 모든 것을 되돌려 놓을 수 있습니다 그건 단순히 그 시점에서 실행을 멈추는 함수 그 반환 후에 다른 코드가 있었더라도 다른 코드는 결코 실행되지 않을 것입니다 Return은 항상 함수가 여기서 끝나는 것을 의미합니다 그러나 일반적으로 return을 사용하는 방법은 실제로 값을 저장하는 것입니다

일반적으로 변수의 형태로 나타납니다 그래서 여기에 내 함수에서 새로운 변수를 만들어 보자 나는 이것을 출력이라고 부르겠다 빈 문자열과 같이 시작하겠다 어쩌면 내가 할 일은 실제로 함수 자체가있는 대신에 함수에있다

함께 모여있는 hello 문자열을 echo합니다 아마도 hello 문자열을 넣을 것입니다 내 출력 변수에 대신 입력하십시오 그래서 출력 변수에 나는 단지 추가 할 것입니다 출력 문자열은 무엇이든간에 함께 쓰고 있습니다

함수가 끝나면, 함수가 완료되면 그 시점에서 실제로 그 함수를 반환 할 수 있습니다 산출 따라서 출력 변수에 저장된 값은 결국 누구에게나 반환됩니다 를 호출 그것을 부르는 사람은 누구나이 두 줄의 진술을 바로 여기 있습니다

그때 나는 무엇이 반환되는지 알고 있어야합니다 내가하기 전에 그것으로, 브라우저로 넘어 가서 무슨 일이 실제로 일어나는지 보도록하겠습니다 에서 그 점에서 당신은 우리의 안녕 열이 사라진 것을 보았습니다 이 경우 그들은 사라졌다 우리는 우리의 안녕하세요 기능을 부르지 않기 때문에가 아닙니다

우리는 여전히 두 번 부릅니다 hello 함수가 작동하지 않는 것도 아닙니다 작동 중이고 작동 중입니다 좋아, 우리가 쓴대로 우리 안녕 줄이 사라진 이유는 say hello 함수의 결과물을 반환하기 때문에 출력 변수에서, 그러나 여기 아래로 우리는 실제로 그 다음으로 아무것도하지 않습니다

값 이 두 줄에서 반환 된 값을 취해야한다면 실제로 그 (것)들과 무언가를하는 것이 었습니다 우리는 다시 산출물을 얻을 수있었습니다 그래서 여기에 언제 내가 먼저 hello 함수를 호출하면 반환되는 값을 취할 것입니다 나는 그것을 여기에 새로운 변수에 할당 할 것이다

나는 그것을 returned_value라고 부를 것이다 그럼 그럴 수 있어요 say, echo와 같은 것을합니다 반환 값은, 그리고 나서 내 returned_value에 넣을 것입니다 바로 거기

내 두 번째 에코 성명서로 여기에 – 어, 내 두 번째 인사, 아마 내가 할 일은 내가 뭐라 하던지 즉각적으로 말해주는거야 그 함수에 의해 반환됩니다 브라우저에서 다시 살펴 보겠습니다 우리가 있습니다 우리는 전에 가지고 있었던 것과 같은 것을 아주 많이 가지고 있습니다

거기에 여분의 텍스트가 있습니다 반환 값은 Victrola에 대한 3 개의 hello이고, 그 다음에는 여전히 하나의 hello입니다 거기 퍼디를 위해서 물론 실제로 작동하는 방식은 제가 전화 할 때입니다 안녕하세요 Victrola 세 번, 내 기능을 실행, 그것은 약간의 출력을 빌드합니다

그것 그런 다음 여기에 저장된 출력을 returned_value 변수에 반환합니다 그 다음 에코 그 문자열의 나머지와 함께 returned_value 변수 안녕하세요 사람, 나는 인사하는 것을 부른다 그리고 나는 그것을 Purdy 인 사람에게 건네 준다, 나는 그것을주지 않는다

물론 내 함수가 실행되면 다시 출력 변수를 넣습니다 출력 변수가 반환되고 반환 될 때 즉시 변수가됩니다 echo 문에 여기에 주어진 값이됩니다 그래서 바로 echo가됩니다 그냥 인사말로 반환 된 값을 출력하고 출력합니다

그리고 모든 것 좋아 보인다 그래서 지금까지는 PHP에서이 기능이 대략적으로 익숙해졌습니다 이전에 보았던 기능들 그들이 실제로 쓰여지는 실제적인 방법 함수를 키워드로 사용하여 JavaScript로 작성된 방식과 유사합니다 그들을 시작하십시오

나머지 형식은 상당히 유사합니다 PHP 변수의 스타일 물론 자바 스크립트 변수의 스타일과 조금 다릅니다하지만 아이디어는 같은 이러한 기본값을 변수에 할당하는 기능은 일종의 깔끔한 특별한 트릭입니다 PHP 함수가 가지고 있지만 그 외에 희망이없는 것은 여기 있습니다

어떤 특별한 방법으로도 절대적으로 놀라운 것입니다 몇 가지가 있거나 적어도 하나는 있습니다 함수의 측면에서 적어도 한 가지 흥미로운 점이 있다고 가정 해 봅시다 PHP와 그 측면은 범위와 관련이 있습니다 PHP는 일종의 비정상적인 언어입니다

여러 가지 다른 방법으로 범위를 결정합니다 그리고 내가 본질적으로 범위에 대해 말할 때 특정 변수를 인식 할 수있는 코드의 범위는 다음과 같습니다 그렇게 생각하고 싶다면 사용하십시오 그래서 특정 장소에 변수를 만들면 프로그램에서 변수를 만드는 곳에서 변수의 범위를 정의합니다 그것 해당 프로그램에서 특정 변수를 사용할 수있는 위치를 정의합니다

예를 들어, 내가 나 자신을위한 새로운 기능을 만들기 위해서 – 나는 내가하고있는 아래에서 아래로 올 것이라고 생각한다 내 말 잘 들어, 우리가 이걸로 놀 수 있도록 새로운 작은 부분을 시작하자 범위 브라우저의 출력이 분리되도록 가로 룰을 반향시킵니다 우리가하고있는이 범위에 이르기까지 이름 아래에서 새로운 기능

나는이 새로운 함수를 무언가라고 부를 것이고 나는 단지 이 시점에서 아무 것도하지 않는 간단한 함수로 시작하십시오 그리고 뭐 그 함수 안에서 새로운 변수를 만들 수있게하고 싶습니다 전화 할께 변수 X와 나는 그것의 가치를 9 줄 것이다 그 기능이 그 일을 마친 후에, 분명히 X라는 변수를 만들고 그것을 값으로 할당하는 것입니다

다시는 함수를 다시 호출하고 싶습니다 처음으로 함수를 호출합니다 이 하나, 그리고 내 X 변수의 값에 액세스 할 수 있는지보고 싶다 그래서 나는 X가 그 다음에 X의 값을 반향시킬 것이다 평신도가 생각하는 그런 종류의 나는 X 변수가 만들어 지도록 쇼를 호출하므로 X 변수에 액세스하십시오

이제 숙련 된 프로그래머들이 그 사실을 알고 있습니다 확실히 작동하지 않을 것입니다 만약 내가 나의 브라우저로 돌아가서 새로 고침을하면 나는 통지를 받는다 43 행에 정의되지 않은 변수 X가 있습니다 여기 에코 문에 있습니다

나는 X의 가치를 되풀이하려고 노력하고 있는데, 그 이유는 무엇인가? 우리는 지금 막 이야기하고있었습니다 문제는이 함수 내에서 X를 만든 곳입니다 그 함수 내에서만 X가 존재하므로이 함수가 실제로 존재할 때만 X 만 존재합니다 실행 중 그래서이 기능이 실행되는 짧은 시간 동안 이 값을 가진 X 변수이지만 일단 함수가 완료되면 본질적으로 이 호출이 끝나면 그 시점의 X는 더 이상 존재하지 않으므로 실제로 에코 할 수 없습니다 밖에있다

이것은 범위가 작동하는 방식에 대한 아주 기초적인 예이지만, PHP의 범위가 조금 이상합니다 내가 할 일은 전에있다 내 쇼 뭔가 다른 함수를 만들거야, 내가 전화 할게 Y, 나는 11의 값을 주려고합니다 그래서 Y라는 값을 만들었습니다

11의 가치가 주어진다 내가 내려와서 내가 일을하는 것처럼 뭔가를한다면 X를 사용하여 이전에 X를 표시하는 대신 X를 표시하는 대신 Y를 표시합니다 그건 내 브라우저에서, 물론 작동합니다 Y는 11입니다 여기에 Y를 생성합니다

함수와 그 함수 밖에서 Y를 사용하여 어떤 종류도 나타내지 않습니다 문제의; 그건 잘 작동하지만, Y 함수에 접근하는 것은 어떨까요? 내가 취하면 함수 밖에서 수행했던 것과 동일한 echo 문을 함수 내부로 복사하고, 함수 안에 Y가 있다고 말할 것입니다 내가 그렇게하면 그 원인이 또 다른 고지 : 정의되지 않은 변수 Y 이제 이것은 약간 특이한 많은 언어 우리가 다루는 많은 언어들에서 우리는 일반적으로 효과적으로, 2 개의 스코프, 글로벌과 같은 것, 로컬 스코프와 같은 것

외부에서 생성 된 변수 함수는 전역 범위에있을 것이다 함수 내부에서 만들어진 모든 것은 지역 범위 그리고 대부분의 언어에서 로컬 범위는 전역 범위를 볼 수 있으며, PHP의 범위에 대한 규칙은 훨씬 복잡하고 여러분보다 훨씬 복잡합니다 대부분의 언어로 볼 수 있습니다 PHP에는 두 개의 범위 만있는 것이 아닙니다

그것은 더 비슷한 것을 가지고있다 아홉 살, 나는 그들을 모두 계산하려고 노력했다 걱정마, 너를 끌고 가지 않을거야 모든 이들을 통해, 그러나 확실히 두 가지가 가장 중요하게 될 것입니다 우리는 페이지 범위와 기능 범위가 될 것입니다

기능 범위는 본질적으로 무엇입니까? 우리가 함수 안에있을 때마다 우리는 들어간다 페이지 범위는 실제로 우리가있는 곳입니다 우리가 기능 안에 있지 않을 때 PHP에 대한 흥미로운 점은 그것들은 지구 적으로나 지역적으로 보일 수 있지만, 그런 식으로 행동하지는 않습니다 페이지 범위에서 생성 된 것은 함수 범위 내에서 자동으로 인식 할 수 없습니다

그래서 여기에 함수 밖에서 Y 변수를 만들면 대부분의 프로그래밍 프로그래밍 본능은 그 변수는 함수 안에서 사용할 수 있어야한다고 말하지만, PHP에서는 그것은 단순히 사실이 아닙니다 함수 내에서 접근 할 수있는 값을 얻는 유일한 방법 PHP에서 그것을 전달하는 것입니다 그게 유일한 옵션입니다 그래서 내 쇼가 무언가를 원한다면 함수는 Y의 값을 사용할 수 있기 때문에 정말로 어떤 식 으로든 떠올라 야합니다 그 값을 Y 함수에 전달할 수 있습니다

당신 중 누군가가 미리 읽었거나 PHP에 대해 익숙한 것보다 더 많이 익숙하다면 다른 몇 가지가 있음을 알 수 있습니다 가능한 속임수이지만 근본적으로 여기에 충실하려고 노력하는 – 좋은 커플 글로벌 또는 슈퍼 글로벌에 발을 내딛는 것과 같은 일을하지 않고 구체적인 범위의 일종 수준이 전반적으로, 나는 더 나은 프로그래밍 실습을 장려한다 그래서 나는 정말로 그렇지 않다 잠재적으로 얻을 수있는 이상한 종류의 사이드 트릭에 들어가기를 원합니다 이 규칙 주위

전반적으로, 나는 그것을 말하는 PHP의 방법, 기본적으로 말하고 싶습니다 만약 함수가 값을 사용해야한다면, 그 값을 전달해야합니다 해로운 저는 실제로 많은 방법으로 생각합니다 이것은 아마도 유익한 방법 일 것입니다

많은 언어에서 사람들은 그런 식으로 프로그램을 설정하는 것이 좋습니다 언어 자체가 실제로 그것을 강요하지 않습니다, 많은 사람들이 조금되고 결국 그들이 할 수있을 때마다 게으름 ​​피우고 게으름 피우는 것 하지만 여기 PHP에서는 훨씬 더 많습니다 값이 함수 범위로 전달되는지 확인하려고 시도 할 때 사용하게 될 것이고 나는 그것이 좋은 것이라고 생각합니다 우리가해야 할 좋은 습관입니다

아마도 PHP의 우위를 따를 것입니다 좋구나 조금 더 재미있는 작은 것 우리는 PHP에서 함수를 사용하여 여기에서 할 수 있습니다 – 저는 하나 더 수평으로 다시 말하지만, 우리의 산출물을 조금씩 분리시켜야합니다 내 코드를 좀 비켜 보자 페이지에서 쉽게 볼 수 있습니다

여기에 다른 함수를 만들어 봅시다 나는 갈거야 이 함수를 add10이라고 부르면이 함수가 전달 될 것이라고 말할 것입니다 숫자 이 함수가 원하는 것은 그 숫자에 10을 더하는 것입니다

그 번호의 새로운 가치를 만들어라 그래서 num = num + 10 좋구나 이 함수를 호출하면 나 자신을위한 변수를 만듭니다 가치 가치라고 부를 것이고 아마도 9의 값, 너무 혼란스럽지 않은 경우 – val 변수와 9의 값

그때 내가하고 싶은 내 add10 함수를 호출하고 싶습니다, 내 val 변수를 전달하고 싶습니다 그리고 나서이 질문에 대한 큰 질문이됩니다 val 변수의 값은? 함수가 끝난 후 val을 말하면, 값은 무엇이 될까요? val 변수의 값은 실제로이 시점에 있습니까? 9가 9이기 때문에 여전히 9일까요? val이이 범위로 설정된 값? 또는 우리가 이상을 지나쳤으므로 19 일이 될 것입니다 이전 값에 10을 더한 함수가 새 값을 만든 다음 여기에 남겨진 가치가 있을까요? 추측이 있으십니까? 글쎄, 네가 우리의 가치가 여전히 9 일 것이라고 추측했습니다 실제로 일어난 일은 무엇인가입니다

내가 전에 언급 한 함수에 변수를 전달할 때마다, 지나가는 것처럼 여기 내 add 변수에 대한 내 val 변수는 실제로 변수 자체가 아닙니다 통과되고있다 대신 전달되는 변수의 값 사본입니다 그래서 여기 add 함수에 val을 전달하면, 실제로 지나치지 않습니다

val 변수 우리가 실제로하는 일은 가치의 사본을 전달하는 것입니다 우리는 숫자 9를 그냥 지나가고 있습니다 따라서 새로운 변수가 실제로 생성 될 때 이 함수를 호출하십시오 새로운 변수는 num이라고 불리며 값의 사본이 할당됩니다

그래서 존재하는 num 변수가 9 개 있고 val 변수가 있습니다 그 안에 9라는 숫자가 들어 있습니다 여기에 함수를 추가하면 10을 추가합니다 실제로 10을 더하는 것은 num 변수입니다 그 시점에서 아무 것도하지 않고 있습니다

val 변수 val 변수는 여전히 거기에 앉아 있습니다 아무 일도 일어나지 않는다 조금도 내 num 변수를 변경하지만 내 함수가 끝나면 num 변수가 변경됩니다

범위를 벗어나면 근본적으로 사라지는 것을 의미합니다 사라지고 결코 다시 볼 수 없습니다 그만큼 val 변수는 전체 시간이 방금 9의 값으로 거기 앉아있었습니다 val 변수의 값을 반향 출력 할 때 물론 실제로 9가됩니다 그곳에 아래쪽에 있습니다

실제로 val 변수의 값을 변경하려면 어떻게해야합니까? 음, 잠재적으로 그렇게 할 수있는 몇 가지 방법이 있습니다 하나 그것들을 반환하고 새로운 가치를 부여하는 것입니다 내 add10 함수 내부 num 변수의 값을 반환하도록 요청한 다음 여기에서 내 함수를 호출 할 때 반환 된 값을 가져올 수 있으며이를 val 변수에 할당 할 수 있습니다 이 시점에서 기술적으로 add10 함수는 여전히 값을 변경하지 않습니다 val 변수

대신 val 변수의 값은 단순히 값과 동일하게 만들어집니다 여기서 num 변수가있을 때 num 변수가 사라지기 직전의 num 변수 반환되었습니다 브라우저에서 체크 아웃하면 작동합니다 너는 발이오고 있음을 볼 수있다 19 번으로 치워야합니다

좋은 방법입니다 간단합니다 읽기 쉽습니다 모두가 이해하기에 아주 간단합니다 다음과 같은 잠재적 인 단점이 그 시점에서 전역 값을 변경하는 함수는 무엇인가를 반환해야하는 경우입니다

그렇지 않으면이 함수에서? 이 기능의 비즈니스가 여러 가지 다른 값, 여기서 num은 단지 그들 중 하나입니다, 나는 거기에 잠재적 트릭을 실행할 수 있습니다 return 문은 하나의 값, 하나의 값만 반환 할 수 있습니다 일어난다 배열을 돌려줌으로써 기술적 인면에서 조금은 속일 수 있지만 함수 적으로 return 문은 한 가지만 반환 할 수 있습니다 그래서 하나가있다

함수를 바꿀 수 있기를 원한다면 잠재적으로 할 수있는 다른 속임수 글로벌 가치 나는 모든 것을 이전의 방식으로 다시 설정하려고합니다 val 변수 자체는 실제로 변경되지 않습니다 브라우저에서 살펴 본다면 확인하겠습니다 예, 변수 val이 9로 다시 돌아 왔습니다

내가 내게 와서 add10 function here 여기에 다른 방법으로 구현할 수 있습니다 내가 할 수있는 것은 내가 단순히 함수 내 변수 이름 앞에 & 문자를 넣을 수 있습니다 정의 자체, 그래서 & $ num 나는 우리가 이전 비디오에서 이야기했다고 믿는다 위에서 언급 한 PHP에서의 & 연산자

PHP의 & 연산자를 참조라고합니다 연산자와 본질적으로 변수 앞에 놓으면 그게 무엇인지 나타냅니다 변수의 가치에 대해 말하는 것이 아니라 변수에 대해 이야기하는 것입니다 그 자체 그래서 여기에서 만들려는 차이는 add10 함수를 호출 할 때입니다

여기에 참조 연산자를 사용했기 때문에 val을 전달합니다 PHP는 변수의 값의 복사본을 전달하는 대신에, 우리는 변수 자체를 전달합니다 따라서 val이 변수이고 num이 변수가 아니라, 서로의 값의 사본을 가진 두 개의 분리 된 가치 변수 add10 함수가 실행되는 동안 여기에서 발생하는 것은 val과 num 변수가 실제로 같은 변수; 다른 이름으로 존재하는 두 개의 다른 이름 일뿐입니다 범위

페이지 범위에서 메모리의 한 지점 인 my 변수를 val이라고합니다 내부 메모리의 같은 지점을 num이라고 부르는 함수 그래서 어떤 일이 일어날 때마다 그 두 변수 중 똑같은 것이 다른쪽에 반영되어있는 것 같습니다 그게 그것이 보이는 방법 사실, 그들은 같은 변수입니다

실제로 10을 여기서 num 변수의 값은 num을 val, num 및 val로 생각할 수 있습니다 같은 것 실제로 여기에 변경되는 val 변수입니다 원하는 경우 val과 num은 실제로 똑같은 것이기 때문에 그런 식으로 생각하십시오 그래서 여기에 그냥 & 내 기능에 추가되고, 내가 다시 브라우저로 이동하고보세요, 우리는 19 세가 된 것을 다시 볼 수 있습니다

따라서 값을 전달하는 대신 이 시점에서 내 함수, 변경할 변수 자체를 전달 해요 함수 변수 자체를 변경하고 실제로 필요가있는 필요를 덜어줍니다 값을 반환하면 해당 변수에 다시 할당됩니다 자,이 방법은 좀 더 간결합니다 내가 돌아와야하기 전에 내가 한 다른 방법으로, 나는 가치를 부여해야했다

돌아왔다, 그것은 조금 더 많은 작업이었다 전반적으로, 나는 실제로 첫 번째 방법을 말할 것입니다 가독성을 위해 아마 더 좋은 방법 일 것입니다 – 아무도 혼란스럽게 할 가능성이 적습니다 이리 & 그것은 확실히 매우 간결하고, 거의 우아하며, 이것을 처리 할 수있는 방법입니다 일종의 문제 이 작은 문자 하나를 추가하고 나는 전체 문제를 돌 보았다

그러나 여전히, 참고 문헌 인 & 문자는 대부분의 사람들에게 훨씬 더 혼란 스럽습니다 간단히 돌아오고 배정하는 것은 내가 짧고, 빠르며, 쉽고, 반드시 필요하지 않은 코드에 일정 수준의 복잡성을 추가합니다 모든 경우에 필요한 때에 사용할 수있는 무언가가 있지만 사용하지 않을 수도 있습니다 매번 또는 항상

이제이 시점에서 PHP는 실제로 다른 함수에서 보았던 기능과 많이 다르지 않습니다 언어 나는 그들이 적어도 당신에게 친숙한 느낌이 들기를 바랍니다 PHP의 함수는 다음과 같습니다 환상적인; 그들은 그들에게 좋은 특징이 많이 있습니다

정기적으로 보는 대부분의 것들 언어에 더하여 기본 인수를 만들 수있는 능력이나 times 변수로 여기에서했던 것처럼 우리의 인수에 기본값을 할당한다 안녕하세요 물론 PHP에서 범위를주의해야합니다 문제 그들은 종종 다른 사람들과 약간 다른 관계로 사람들을 가끔 잡습니다

우리가 많은 언어로 보는 것 물론 항상 참조 연산자가 있습니다 함수와 함께 가장 일반적으로 사용되므로 그 점을주의 깊게 관찰하고 기억하십시오 당신이 그것을 볼 때 실제로 의미하는 것 함수는 PHP가 우리에게 제공하는 방법 중 하나입니다

코드를 재사용 할 수 있습니다 일반적으로 모든 언어와 마찬가지로 PHP의 최상의 기능은 다음과 같습니다 꼭 짧은 기능 일 필요는 없지만 한 가지 일에 집중하는 기능입니다 함수를 작성할 때마다 해당 함수가 하나의 작업을 수행하는 것이 가장 좋습니다 그 일은 잘합니다

하나의 작업을 수행하는 기능은 훨씬 더 가치가있을 것이며 훨씬 더 장기적으로 재사용 할 수있는 기능은 둘 이상의 작업을 수행하는 기능보다 넌 말할 수있다, 예를 들어, 더 많은 함수를 사용할 수있는 함수, 두 개의 숫자를 더하는 함수 함께 또는 두 개의 숫자를 더한 다음 하나를 뺍니다 음, 거기에 인생에서 두 개 이상의 숫자를 합쳐야하는 경우가 더 많습니다 두 개의 숫자를 더하고 하나를 뺄 필요가있는 경우가 될 것입니다 그래서 기능 집중, 필요한 최소한의 작업 만 수행하면 해당 기능이 나는 미래에 점점 더 많은 시간을 재사용 할 수있을 것이며, 결국,이 기능을 사용하는 전체 점 이 함수는 우리에게 우리가 작성한 코드를 재사용 할 수 있어야 다시 쓸 필요가 없습니다

다시 테스트 할 필요가 없으며 다시 디버깅 할 필요가 없습니다 그건 우리에게 우리의 프로젝트를 함께, 우리의 프로그램을 더 빨리 함께 그것은 우리에게 더 일관성을줍니다 오류가 적은 결과