Maison  >  Article  >  développement back-end  >  Accorder aux fichiers externes l'accès à l'arborescence des objets

Accorder aux fichiers externes l'accès à l'arborescence des objets

王林
王林avant
2024-02-08 23:15:22541parcourir

Accorder aux fichiers externes laccès à larborescence des objets

Dans cet article, l'éditeur php Shinichi présentera comment accorder l'accès à l'arborescence des objets aux fichiers externes en PHP. En programmation orientée objet, les droits d'accès entre les objets sont très importants, car ils permettent de contrôler l'interaction et le partage de données entre les objets. En utilisant des modificateurs d'accès (public, protégé, privé) en PHP, nous pouvons limiter la portée d'accès des objets et assurer la sécurité et la maintenabilité du code. Cet article expliquera en détail l'utilisation de ces modificateurs d'accès et fournira quelques exemples d'applications pratiques pour aider les lecteurs à comprendre et à appliquer en profondeur ces concepts. Que vous soyez débutant en PHP ou développeur expérimenté, cet article vous apportera de précieuses connaissances et conseils pratiques. Explorons les mystères des autorisations d'accès aux objets en PHP !

Contenu de la question

Supposons que mon module ait la structure de fichier .go suivante :

  • tree_definition.go
  • tree_creation.go

tree_creation analyse certains fichiers et crée une arborescence d'objets (otree en abrégé) à partir d'eux en utilisant les structures de données et les méthodes (et fonctions) définies dans tree_definition.

Lors de l'analyse, je vois que le fichier external.go contient du code conçu pour accéder à l'otree et le modifier.

Une fois l'analyse terminée, le code dans external.go devrait pouvoir utiliser otree et le modifier via l'API que j'ai définie dans tree_definition. Tout cela se produit au moment de l'exécution.

Précision :

  • Oui, j'essaie de reproduire le comportement du DOM
  • external.go vient d'un autre répertoire, pas de l'intérieur du module
  • External.go n'est visible qu'au moment de l'exécution, lorsque tree_creation ajoute external.go à la structure de données d'otree

J'ai suivi presque toutes les étapes pour le reproduire. C'est la dernière partie. Malheureusement, je ne peux pas fournir de lien vers Git pour le moment afin que vous puissiez le vérifier par vous-même, mais j'apprécierais tout commentaire pouvant m'aider à clarifier la situation.

Cordialement!

Je pense que je comprends. Je le posterai plus tard.

Solution

D'accord, commençons ! Enfin, avec l'aide de mon ami bing chat, j'ai pu trouver une solution simple sans utiliser de fichiers mémoire ni faire de requêtes http via localhost. La solution proposée est très élégante et fonctionne parfaitement pour moi ! Je pense toujours que je vais utiliser des fichiers mémoire, mais nous verrons. Cela dépend de l'évolutivité. Aussi, un merci spécial

@burakserdar

Sa réponse.

package main

// This will be in the runtime file
import (
    "bufio"
    "fmt"
    "os/exec"
)

func main() {
    cmd := exec.Command("go", "run", "user_defined.go")
    stdout, err := cmd.StdoutPipe()
    if err != nil {
        panic(err)
    }
    err = cmd.Start()
    if err != nil {
        panic(err)
    }
    scanner := bufio.NewScanner(stdout)
    for scanner.Scan() {
        fmt.Println(scanner.Text())
        if scanner.Text() == "some_command" {
            fmt.Println("found some_command")
        }
        if scanner.Text() == "another_command" {
            fmt.Println("found another_command")
        }
    }
    err = cmd.Wait()
    if err != nil {
        panic(err)
    }
}
Modifier 1 Il s'avère qu'il existe 3 modes de communication entre les processus, mais le meilleur pour mon problème est la mémoire partagée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer